2
標題幾乎總結了它。我需要像每個線程緩存命中/未命中一樣的東西。我如何獲得這些信息? Cachegrind似乎不工作,基於我的順序程序給出了執行的X個指令的計數和Y對於我的並行程序的事實,除了X = Y這一事實外,一切正常。我認爲Cachegrind不適用於線程?我可以使用任何其他工具?謝謝。如何衡量多線程應用程序中的緩存性能?
標題幾乎總結了它。我需要像每個線程緩存命中/未命中一樣的東西。我如何獲得這些信息? Cachegrind似乎不工作,基於我的順序程序給出了執行的X個指令的計數和Y對於我的並行程序的事實,除了X = Y這一事實外,一切正常。我認爲Cachegrind不適用於線程?我可以使用任何其他工具?謝謝。如何衡量多線程應用程序中的緩存性能?
您可以使用perf從硬件性能計數器獲取所需的信息。
嘗試:
$ perf stat -e cache-misses,cache-references /bin/ls /tmp/
...
Performance counter stats for '/bin/ls /tmp/':
3,534 cache-misses # 16.605 % of all cache refs
21,283 cache-references
0.001649284 seconds time elapsed
但是'PERF stat'無法輸出分離每個線程計數器;只有總結... http://perf.wiki.kernel.org/index.php/Tutorial#Counting_with_perf_stat「默認情況下,進程的所有線程和後續子進程和線程的perf stat計數,可以使用-i選項。不可能獲得每個線程或每個進程的計數分解。「 – osgx