我正在嘗試使用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