2017-01-16 5 views
2

linux perf toolを使用してプログラム内のメモリアクセスをサンプリングしようとしています。具体的には、perfを使用してNUMA内のすべてのCPUの読み取り/書き込みアクセスを監視しています。perfを使用してすべてのCPUのメモリアクセスを監視します

のCPUの読み取りと書き込みのメモリアクセスをすべてで監視できますが、アクセスがローカルメモリアクセスかリモートメモリアクセスかを知る必要があります。

perfリストを使用してイベントリストを調べましたが、ソケットのメモリアクセスに関するイベントがいくつか見つかりました。

質問

  1. perfを使用した場合、すべての単一のCPUのリモートメモリアクセスを取得する方法はありますか?
  2. perfよりも良い選択肢はありますか?

答えて

2

はい、あなたのCPUでPMUユニットは、おそらくあなたは、様々なアンコアカウンターを通じてやりたいことができます - 特にそれらが非ローカルメモリアクセスのための様々なoffcore応答をカウントすることができます。このblog postは合理的な出発点です。

主な問題は、それが関連するイベントをアンコアとNUMAに来る場合は特に、多くの場合、特定のカーネルバージョンに結び付けられperfツールは、、最新のプロセッサの支援に遅れということです。それを回避するには

、あなたがあなたのシステムではなく、インテルから直接ダウンロード最新のイベントIDを持っているものは何でもperfの基礎となる使用ocperfラッパースクリプトを提供アンディKleenがのpmu-toolsを、使用することができます。これは通常、あなたが必要とするuncoreイベントへのアクセスを提供します。

もちろん、あなたがその作業をしても、これらのイベントはしばしば解釈が非常に厳しいです。特に、要求メモリ要求の精神モデルは、プリフェッチの動作、要求-ownership、等、等


どちらため、新しいプロセッサ/イベントを追加するいくつかの遅れなどが、特にためのツール、充填される過程で、ラインバッファの「ヒット」とアクセスカーネルに縛られていて、おそらく最先端のカーネルではないので、メインラインperfがサポートを持っていても、perfあなたのカーネルに関連したバージョン。

一般的に、開発者のようなほとんどのカーネル開発者がNUMAシステムで作業していないためです。

+0

ありがとう、それは私のために非常に役立つ!! :) –

関連する問題