繁体   English   中英

perf中的硬件事件和硬件缓存事件有什么区别?

[英]What's the difference between hardware Event and hardware cache Event in perf?

当我输入perf list命令时,我发现有两种事件: Hardware eventHardware cache Event 两者有什么区别 ?

cache-missesLLC-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM