[英]What's the difference between hardware Event and hardware cache Event in perf?
当我输入perf list
命令时,我发现有两种事件: Hardware event
和Hardware cache Event
。 两者有什么区别 ?
cache-misses
和LLC-misses
什么区别? 缓存未命中是否包括LLC未命中?
在测试程序时, perf
工具是否会降低总体性能?
根据perf_event_open
系统调用的手册页 (由perf
用户级实用程序在内部使用):
更多我想知道这是否与[英特尔®64和IA-32架构软件开发人员手册3B]中的非架构和架构事件有一些联系。英特尔®64和IA-32架构软件开发人员手册3B 2 。
无论此分类的确切含义如何, 在上一个问题和上面提到的手册页中所述的cache-misses
表示任何缓存无法提供的内存访问次数。 换句话说,它表示最后一级高速缓存中的高速缓存未命中数。 因此,我认为这与LLC-misses
相同,遗憾的是我无法在我的笔记本电脑上确认,因为不支持LLC-misses
。
关于您的上一个问题,性能监视所产生的开销应该非常低。 实际上,开销主要是由于读取计数器值,并且使用perf stat
我猜这个读数应该在执行结束时只执行一次(考虑到计数器不会溢出)
问题2:如果我查看ARM内核代码(“arch / arm / kernel / perf_event_v7.c”)的性能
缓存未命中意味着ARMV7_PERFCTR_L1_DCACHE_REFILL,这意味着第一级数据缓存未命中So LLC可能意味着低级缓存未命中(可能是L3)
您可以查看体系结构特定的内核代码ARMV7_PERFCTR_L1_DCACHE_REFILL具有哪些值以及技术参考手册以了解该值的确切含义。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/BEHCCEAE.html
问题3:我认为perf从硬件寄存器读取计数器(至少用于硬件性能计数器),因此不会真正影响代码的性能。 因为它不会真正将代码挂钩放在代码中。 但有些论文表示,如果在代码中使用perf,则会有5%的性能损失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.