4

私のプログラムは共有メモリをデータストレージとして使用しています。このデータは、実行中のすべてのアプリケーションで利用できる必要があり、このデータのフェッチは高速である必要があります。ただし、一部のアプリケーションは異なる NUMA ノードで実行でき、それらのデータ アクセスには非常にコストがかかります。すべての NUMA ノードのデータ複製がこれを行う唯一の方法ですか?

4

1 に答える 1

5

NUMA が原因と考えられる速度低下の主な原因は 2 つあります。1 つ目は、プラットフォームによって異なるリモート アクセスの遅延の増加です。私が使用しているプラ​​ットフォームでは、レイテンシーに約 30% のヒットがあります。

パフォーマンス低下のもう 1 つの原因は、NUMA ノード間の通信リンクとコントローラーに関する競合です。

Linux のデフォルトの割り当て方式では、データが作成されたノードにデータが割り当てられます。アプリケーション内のデータの大部分が単一のスレッドによって初期化される場合、その 1 つのメモリ ノードに対して多数のクロス NUMA ドメイン トラフィックと競合が生成されます。

データが読み取り専用の場合、レプリケーションは適切なソリューションです。

それ以外の場合は、すべてのノードにデータ割り当てをインターリーブすると、すべてのノードにリクエストが分散され、輻輳が緩和されます。

データをインターリーブするには、Linux を使用している場合はset_mempolicy()fromを使用できます。numaif.h

于 2012-02-21T03:55:15.007 に答える