结果显示,在测试程序执行期间,L1 Dcache一共发生了415348次miss事件。 使用perf报告工具分析结果 最后,需要使用perf报告工具分析结果,以更直观地了解Cache的性能和行为。可以使用如下命令生成perf报告:perf report 这个命令会打开一个交互式的报告界面,在界面中可以看到各种性能指标的统计信息,例如Cache的命中率、失效率...
perf可以统计或采样的event有很多,如果我们要分析cpu,那么我们可以使用cpu-cycles、cpu-clock来衡量占用cpu的程序的分布情况,还可以通过cache-misses、page-faults、branch-misses等event来分析造成cpu占用高的底层原因,确定原因后方便优化。 如果我们要分析内存、io、网络等,也可以通过其他event来进行分析,perf可以使用的e...
perf通过硬件性能计数器来获取cache miss的信息。硬件性能计数器是处理器提供的特殊寄存器,用于记录不同类型的事件发生的次数。对于cache miss,perf会使用相应的计数器来记录缓存未命中的次数。 在x86架构中,perf使用的是指令计数器(Instruction Counter)和缓存计数器(Cache Counter)来统计cache miss。指令计数器记录了程...
Performance counter statsfor'./miss':88,780L1-dcache-load-misses0.009002291seconds time elapsed0.009174000seconds user0.000000000seconds sys [root@bogon c++]# perf stat -e L1-dcache-load-misses ./miss1Performance counter statsfor'./miss 1':1,015,683L1-dcache-load-misses0.012000335seconds time el...
稍微扩展一下思路,就可以发现改变采样的触发条件使得我们可以获得不同的统计数据: 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布。 以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。
用linux perf命令来分析程序的cpu cache miss现象 #include#include int main(int argc, char **argv) { int a[1000][1000]; if(1 == argc) { for(int i = 0; i < 1000; ++i) { for(int j = 0; j < 1000; ++j) { a[i][j] = 0; ...
稍微扩展一下思路,就可以发现改变采样的触发条件使得我们可以获得不同的统计数据: 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布。 以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。
perf可以统计或采样的event有很多,如果我们要分析cpu,那么我们可以使用cpu-cycles、cpu-clock来衡量占用cpu的程序的分布情况,还可以通过cache-misses、page-faults、branch-misses等event来分析造成cpu占用高的底层原因,确定原因后方便优化。 如果我们要分析内存、io、网络等,也可以通过其他event来进行分析,perf可以使用的...
稍微扩展一下思路,就可以发现改变采样的触发条件使得我们可以获得不同的统计数据: 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布。 以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。
Hardware Events: CPU的PMU(performance monitoring unit)触发的事件,也叫performance monitoring counters (PMCs),例如cpu-cycles、cache miss Software Events: 一些比较底层的软件event,例如缺页、timer(定时) KernelTracepoint Events: 内核中的tracepoint