首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perf_event_open和PERF_COUNT_HW_INSTRUCTIONS

perf_event_open和PERF_COUNT_HW_INSTRUCTIONS
EN

Stack Overflow用户
提问于 2019-12-30 09:31:19
回答 1查看 624关注 0票数 2

我试图分析一个结构非常复杂的现有应用程序。目前,我使用的是perf_event_open,所需的ioctl调用可以启用我感兴趣的事件。

manpage仍然认为PERF_COUNT_HW_INSTRUCTIONS应该谨慎使用-那么在Skylake处理器的情况下哪一个应该是首选的呢?可能是特定的Intel PMU

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 19:10:00

perf_event_open手册http://man7.org/linux/man-pages/man2/perf_event_open.2.html提到了PERF_COUNT_HW_INSTRUCTIONS:

PERF_COUNT_HW_INSTRUCTIONS退休指令。小心,这些可能会受到各种问题的影响,最显著的是硬件中断计数。

我认为这意味着可以使用COUNT_HW_INSTRUCTIONS (而且几乎在任何地方都支持它)。但是,由于中断或其他逻辑的干扰,在几次运行中,某些代码片段的COUNT_HW_INSTRUCTIONS的确切值可能略有不同。

因此,在大多数CPU上使用事件PERF_COUNT_HW_INSTRUCTIONS和PERF_COUNT_HW_CPU_CYCLES是安全的。Linux内核中的perf_events子系统将COUNT_HW_CPU_CYCLES映射到一些更适合当前使用的CPU及其PMU的原始事件。

根据您的目标,您应该尝试获取代码片段的PERF_COUNT_HW_INSTRUCTIONS值的一些统计信息。您还可以使用一些简单的程序通过几次运行perf stat来检查此计数器的稳定性:

代码语言:javascript
复制
perf stat -e cycles:u,instructions:u /bin/echo 123
perf stat -e cycles:u,instructions:u /bin/echo 123
perf stat -e cycles:u,instructions:u /bin/echo 123

或者使用perf stat的集成重复功能:

代码语言:javascript
复制
perf stat --repeat 10 -e cycles:u,instructions:u /bin/echo 123

我有+-10指令事件变化(小于0.1%)的20万总指令执行,所以它是非常稳定的。对于周期,我有5%的变化,所以它应该是循环事件标记的谨慎警告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59528508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档