NUMA 対応のマルチスレッド プログラミングは初めてです。すべてのスレッドとそのメモリ割り当てが 1 つのノードに制限されるようにコードを書いています。プログラムの開始時に、次の呼び出しを行います。
struct bitmask *bm = numa_parse_nodestring("0");
if (bm == 0) {
exit(1);
}
numa_bind(bm);
私の理解では、この方法で numa_bind を呼び出すと、すべてのスレッドとすべてのメモリ割り当てがノード 0 にバインドされます。
さらに、このコードから pthread を開始するときは、次を使用して特定の CPU にバインドします。
pthread_setaffinity_n
ただし、/proc//numa_maps を見ると、特定のライブラリ (libc など) がノード 1 のメモリにバインドされていることがわかります。プロセスが必要とするすべてのメモリがノードにバインドされていることを確認するにはどうすればよいですか? 0?