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

use*_*491 7 linux perf

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

cache-misses和之间有什么区别LLC-misses?缓存未命中是否包括LLC未命中?

perf在测试程序时,工具是否会降低总体性能?

Man*_*lva 2

根据系统调用 的手册页perf_event_open(由用户级实用程序内部使用perf):

\n\n
    \n
  • 硬件事件:这表示内核提供的“通用”硬件事件之一
  • \n
  • 硬件缓存事件:这表示硬件缓存事件。
  • \n
\n\n

更重要的是,我想知道这是否与 [Intel\xc2\xae 64 和 IA-32 架构软件开发人员\xe2\x80\x99s 手册 3B]Intel\xc2\xae 64 和 中所谓的非架构和架构事件有某种联系IA-32 架构软件开发人员\xe2\x80\x99s 手册 3B 2 .

\n\n

无论此分类的确切含义如何,如上一个问题cache-misses和我上面提到的手册页中所述,表示任何缓存都无法提供服务的内存访问次数。换句话说,就是末级缓存中缓存未命中的次数。因此,我猜这与 相同,不幸的是我无法在我的笔记本电脑上确认这一点,因为不受支持。LLC-missesLLC-misses

\n\n

关于你的最后一个问题,性能监控产生的开销应该非常低。事实上,开销主要是由于读取计数器值,并且使用perf stat我猜想这种读取应该在执行结束时只执行一次(考虑到计数器不会溢出)

\n