我正在尝试使用perf来分析应用程序,而现在我只对流入/流出DRAM的流量感兴趣。我无法从结果中理解这个应用程序从DRAM获得的吞吐量。使用perf了解内存压力
这是我如何调用PERF命令:
perf stat -av -e LLC-misses,cache-misses,L1-dcache-load-misses <application>
我使用-a因为该应用程序与已经运行的另一个守护进程进行通信。
结果我得到如下:
LLC-misses: 0 288628898 288606144
cache-misses: 373507 287154835 287143402
L1-dcache-load-misses: 3831372 286357135 286357135
Performance counter stats for './mclient -d tpch-sf1 /home/lottarini/Desktop/DPU/queries/tpch-monetdb/02.sql':
0 LLC-misses [99.99%]
373,507 cache-misses [100.00%]
3,831,372 L1-dcache-load-misses
0.035855129 seconds time elapsed
我的理解是,缓存缺失是在整个高速缓存层次结构错过内存引用的数量。这与事实相符,我得到的L1未命中比缓存未命中多得多。
首先,为什么工具不会输出L1失误的置信度值?
为什么高速缓存未命中的数量与LLC未命中值不同?如果在整个高速缓存层次结构中发生错误,它必须在LLC中错过。
此外,如果我想提取数量由于这些未命中而正在传输的数据,我该如何计算?是否有perf事件选项,我可以指定或我需要将这些数字乘以内存块的大小[谁知道]在错过的情况下传输?
你能告诉你正在运行这个CPU架构吗? perf的输出完全取决于如何为该体系结构配置Linux内核。 – 2014-11-03 08:52:37
Proc:http://ark.intel.com/products/52213/Intel-Core-i7-2600-Processor-8M-Cache-up-to-3_80-GHz uname -a:Linux c1 3.2.0-70 -generic#105-Ubuntu SMP Wed Sep 24 19:49:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux – igon 2014-11-03 15:44:50