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

问题描述 投票:7回答:2

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

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

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

linux perf
2个回答
2
投票

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

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

更多我想知道这是否与[英特尔®64和IA-32架构软件开发人员手册3B]英特尔®64和IA-32架构软件开发人员手册3B2中的非架构和体系结构事件有一些联系。

无论这种分类的确切含义如何,cache-misses如上所述here in a previous question和我在上面提到的手册页中表示任何缓存都无法提供的内存访问次数。换句话说,它表示最后一级高速缓存中的高速缓存未命中数。因此我猜这与LLC-misses相同,不幸的是我无法在我的笔记本电脑上确认,因为LLC-misses不受支持。

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


1
投票

问题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%的性能损失。

© www.soinside.com 2019 - 2024. All rights reserved.