2012-01-25 11 views
2

タイトルがかなりまとまっています。スレッドごとにキャッシュヒット/ミスのようなものが必要です。どのようにしてその情報を入手できますか?私の逐次プログラムが実行されたX命令の数と、私の並列プログラムのYの数がすべてOKであるという事実に基づいて、Cachegrindは動作していないようです。ただし、X = Yです。私はCachegrindがスレッド用ではないと仮定しますか?私が使うことができる他のツール?ありがとう。マルチスレッドアプリケーションでキャッシュパフォーマンスを測定するにはどうすればよいですか?

答えて

2

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 
+0

しかし 'PERFのstat'が出力スレッドごとのカウンターを分離することはできません。要約のみ... http://perf.wiki.kernel.org/index.php/Tutorial#Counting_with_perf_stat "デフォルトでは、perf statは、プロセスとそれ以降の子プロセスとスレッドのすべてのスレッド数をカウントします。 -iオプション。スレッドごとまたはプロセスごとにカウントブレークダウンを取得することはできません。 – osgx

関連する問題