4

それぞれ 6 コアの 2 つの CPU を搭載したサーバーがあります。各 CPU は 4 GB の RAM に接続されています。各コアで 4 つのスレッドを使用して、両方の CPU で同じコード (小さな変更を加えたもの) を並行して実行する並列プログラムがあります。

効率上の理由から、CPU 1 で実行されているコードが、CPU 2 の RAM ではなく、対応する RAM にのみメモリを割り当てるようにする方法があれば最適です。また、その逆も同様です。オーバーヘッド。

これを行う方法はありますか?

4

2 に答える 2

6

Linux を使用していると仮定すると、デフォルトの NUMA ポリシーはメモリをローカルに割り当てることを優先するため、求めているものはすぐに使用できるはずです。ただし、これは構成によって変更できます。

libnumaローカル NUMA ノード (RAM + ソケット / コアの組み合わせ) または特定のノードにメモリを割り当てるために使用できる現在のポリシーが何であれ、numa_alloc_localnuma_alloc_onnodeなど。メモリを解放するにはnuma_free. これらの関数と NUMA システム全般の詳細については、 numa(7)numa_alloc(3)のマニュアル ページを参照してください。

于 2013-07-08T10:27:52.007 に答える