現在、2 つのノードを持つ NUMA システムで作業しています。メモリを指しているポインタを取得しましたが、それがどのノードにあるのかわかりません。メモリのノード番号を取得する方法はありますか?
(現在のスレッドのノード マスクの取得が機能しない理由は、ノードのメモリがいっぱいであるため、スレッドが現在のノードに関連付けられていても、隣接するノードにメモリを割り当てる可能性があるためです。したがって、メモリの場所を取得する直接的な方法を探しています。)
現在、2 つのノードを持つ NUMA システムで作業しています。メモリを指しているポインタを取得しましたが、それがどのノードにあるのかわかりません。メモリのノード番号を取得する方法はありますか?
(現在のスレッドのノード マスクの取得が機能しない理由は、ノードのメモリがいっぱいであるため、スレッドが現在のノードに関連付けられていても、隣接するノードにメモリを割り当てる可能性があるためです。したがって、メモリの場所を取得する直接的な方法を探しています。)
NUMA API を確認してください: http://linux.die.net/man/3/numa。さりげない見た目からnuma_alloc_onnode()
、numa_get_run_node_mask()
目立って重宝します。
API の関数の組み合わせによって、ノード番号を知りたい理由に対処できる場合があります。
これは、Linux で を使用して実行できnuma_move_pages
ます。これは単にページを移動するための砂糖です。ノードを渡さない場合は、ポインタの NUMA ノードの ID がステータスで返されます。ポインタは、物理メモリに存在するページ (つまり、既にページ フォールトが発生しているページ) を指す必要があることに注意してください。そうしないと、ENOENT が返されます。