perf record -p <PID> -e cache-misses -g -- sleep <采样秒数> 即可。 2.3 分析数据 这里应该同样可以用火焰图,不过我没试过。 使用perf report 可以查看 cache-misses 事件集中发生在哪个函数。这里由于我们是想定位到 cache miss 的具体位置、而且越底层越好,所以我们可以关注自身频数(Self,意思是仅执行函...
perf通过硬件性能计数器来获取cache miss的信息。硬件性能计数器是处理器提供的特殊寄存器,用于记录不同类型的事件发生的次数。对于cache miss,perf会使用相应的计数器来记录缓存未命中的次数。 在x86架构中,perf使用的是指令计数器(Instruction Counter)和缓存计数器(Cache Counter)来统计cache miss。指令计数器记录了程...
[root@bogon c++]# perf stat -e L1-dcache-load-misses ./miss0Performance counter statsfor'./miss 0':1,015,347L1-dcache-load-misses0.012348778seconds time elapsed0.006237000seconds user0.006237000seconds sys
Performance counter stats for './miss 1': 1,015,683 L1-dcache-load-misses 0.012000335 seconds time elapsed 0.006059000 seconds user 0.006059000 seconds sys [root@bogon c++]# perf stat -e L1-dcache-load-misses ./miss 1 Performance counter stats for './miss 1': 1,015,363 L1-dcache-load...
11,636 cache-misses 0.233570690 seconds time elapsed 可以看到,后者的cache miss数量相对前者有很大的下降,耗费的时间大概是前者的十分之一左右。 进一步,可以查看触发cach-miss的函数: test程序的结果: [huangyk@huangyk test]$ perf record -e cache-misses ./test ...
从前面我们可以知道问题大概率是在四个子线程上,并且存在比较多的cache miss。因此我们可以尝试用perf c2c来查看是否存在伪共享情况: perf c2c 开始收集: perf c2c record 查看结果: perf c2c report 这里我们重点看HITM(LLC Misses to Remote cache),表示的是由cache的修改导致远端的cache失效的占比,由Load Remot...
通过-e指定关注的事件,比如查看造成cache miss最多的函数排行 perf top -e cache-misses perf top -e task-clock perf top -G // 得到调用关系图 perf top-e cache-misses -G // 得到调用关系图 perf top -e cycles // 指定性能事件 perf top -p 23015,32476 //查看这两个进程的cpu cycles使用情况...
接下来,需要使用perf监控Cache事件,以了解Cache的行为。可以使用如下命令监控L1 Dcache的miss事件: perf stat -e L1-dcache-load-misses ./test 这个命令会运行之前编写的测试程序,并监控程序执行期间L1 Dcache的miss事件的数量。执行结果如下: Performance counter stats for './test': ...
上面介绍了perf的原理,“根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文”,我们可以改变采样的触发条件使得我们可以获得不同的统计数据,例如 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布;以 cache miss 事件触发采样便可以知道 cache miss 的分布,即 ...
“根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文”,我们可以改变采样的触发条件使得我们可以获得不同的统计数据,例如 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布;以 cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在...