emulation-faults [Software event] L1-dcache-loads [Hardware cache event] L1-dcache-load-misses [Hardware cache event] L1-dcache-stores [Hardware cache event] L1-dcache-store-misses [Hardware cache event] L1-dcache-prefetches [Hardware cache event] L1-dcache-prefetch-misses [Hardware cache e...
perf stat命令用于收集和显示性能计数器统计信息。它可以针对整个系统或特定进程收集数据,并显示事件的发生次数、占比等信息。 $ perf stat [options] [command] 以下是perf stat的一些常用参数: -e 或 --event:指定要收集的事件类型,例如:cache-misses, instructions 等。 -p 或 --pid:指定要监视的进程ID。
上面介绍了perf的原理,“根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文”,我们可以改变采样的触发条件使得我们可以获得不同的统计数据,例如 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布;以 cache miss 事件触发采样便可以知道 cache miss 的分布,即 c...
例如,如果Instructions数量较高,可能表示程序存在过多的计算操作;如果Cache Misses数量较高,可能表示程序的数据访问模式不合理;如果Branch Misses数量较高,可能表示程序的分支逻辑需要优化。 对于开发者和系统管理员来说,理解perf stat输出中的数字可以帮助他们识别程序的性能问题,并进行性能优化。通过使用perf stat,他们可...
接下来,需要使用perf监控Cache事件,以了解Cache的行为。可以使用如下命令监控L1 Dcache的miss事件: perf stat -e L1-dcache-load-misses ./test 这个命令会运行之前编写的测试程序,并监控程序执行期间L1 Dcache的miss事件的数量。执行结果如下: Performance counter stats for './test': ...
以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。 因此让我们先来了解一下 perf 中能够触发采样的事件有哪些。 使用perf list(在root权限下运行),可以列出所有的采样事件 事件分为以下三种:
以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。 因此让我们先来了解一下 perf 中能够触发采样的事件有哪些。 使用perf list(在root权限下运行),可以列出所有的采样事件 事件分为以下三种:
处理器厂商针对这种情况,在硬件中加入了 PMU 单元,即 performance monitor unit。PMU 允许软件针对某种硬件事件设置 counter,此后处理器便开始统计该事件的发生次数,当发生的次数超过 counter 内设置的值后,便产生中断。比如 cache miss 达到某个值后,PMU 便能产生相应的中断。
通过添加 -e 选项,您可以列出造成其他事件的 TopN 个进程 / 函数。比如 -e cache-miss,用来看看谁造成的 cache miss 最多。 3.4 使用 perf record, 解读 report lenny@hbt:~/test$ perf record ./a.out [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.015 ...
CPU cache miss情况过多; CPU内存I/O过慢; TCP重传过多; 是否存在某个函数调用过多; 当然,也有其他非常多的场景,这里只列举了一小部分。 相关术语 在开始之前,我们需要介绍一些术语: 计数(statistics/count):表示某个事件发生的次数,比如我们可以通过 perf stat -d command 来查看某个命令发生的次数; ...