3

最近のLinux分散共有メモリシステムで実行されているマルチスレッドアプリケーションで、リモート(非ローカル)NUMAメモリノードへのスレッドごとの要求数をカウントする簡単な方法はありますか?

PAPIを使用して相互接続トラフィックをカウントすることを考えています。これは行く方法ですか?

私のアプリケーションでは、スレッドはその存続期間全体にわたって特定のコアまたはプロセッサーにバインドされます。アプリケーションが起動すると、メモリはページごとに割り当てられ、使用可能なすべてのNUMAメモリノードにラウンドロビン方式で分散されます。

ご回答ありがとうございます。

4

3 に答える 3

4

VTune にアクセスできる場合、ローカルおよびリモートの NUMA ノード アクセスは、ハードウェア カウンター OFFCORE_RESPONSE.ANY_DATA.OTHER_LOCAL_DRAM_0 によってカウントされます (高速なローカル NUMA ノード アクセスの場合)。

VTune でのカウンターの表示方法:

VTune で NUMA ハードウェア カウンターを構成する

2 つのシナリオでのカウンターの外観:

NUMA の不幸なコード: コア 0 (NUMA ノード 0) は、NUMA ノード 1 に存在する 50 MB を増やします: 多くのリモート NUMA ノード アクセスを伴う NUMA の不適切なコード

NUMA ハッピー コード: コア 0 (NUMA ノード 0) は、NUMA ノード 0 に存在する 50 MB をインクリメントします: ローカル NUMA ノード アクセスが多い NUMA ハッピー コード

于 2013-03-25T14:35:10.380 に答える
-1

これが直接的なものであるかどうかはわかりませんし、「分散共有メモリ システム」が何であるかはわかりませんが、通常の Linux では、ソースにアクセスできる場合は、自分でリクエストを数えることができるかもしれません。 . 私の「ポインター アドレスから NUMA ノードを取得できますか?」に対する回答を使用できます。ここで質問して、要求されたメモリがどのノードにあるかを把握し、スレッドがリモート要求を集計しているノードを把握します。これは、リモート メモリがローカル キャッシュにまだ存在せず、取得する必要がある場合ではなく、リモート メモリを使用している頻度のみを示しているため、正確に必要なものではない可能性があります。

リモート メモリのキャッシュ ミスについて知りたい場合は、プロファイリング タグを質問に追加してみてください。より多くの読者を引き付ける可能性があります。ローカル メモリ ミスとリモート メモリ ミスを区別するプロファイラがあれば、それも調べてみたいと思います。

于 2011-11-12T05:28:08.420 に答える