1

巨大な TLB ページ (1GB) を使用して 2GB のバッファーを割り当て、メモリ領域を特定の numa ノードにバインドしようとしています。

巨大な TLB ページを使用してバッファーを割り当てるために、次のコードを使用しています。

shmid = shmget (IPC_PRIVATE, buf_size,
                SHM_HUGETLB | IPC_CREAT | SHM_R | SHM_W);
buf = (uint64_t *) shmat (shmid, 0, 0);

それから、私は電話しました:

numa_tonode_memory (buf, buf_size, 3);

バッファを特定のノードに移動します。

プログラムを実行すると、1GB を超えるバッファー オフセットにアクセスするとすぐに、「バス エラー (コア ダンプ)」でプログラムが停止します。

numa_tonode_memory を削除するとエラーは回避されますが、特定のノードにメモリを割り当てる目的が失われます。

この問題の回避策があるかどうかは疑問ですが、

ありがとうございました、

4

0 に答える 0