2016-04-19 8 views
1

NUMAのアーキテクチャをハードウェアの観点から説明しているresourcesと、NUMAを認識する書き込みソフトウェアのperformance implicationsがありますが、仮想ページと物理フレームのマッピングがどのように決定されているかに関する情報はまだ見つかりませんNUMA。NUMAはどのように仮想メモリに表示されますか?

さらに具体的には、最新のLinux上で実行されているアプリケーションでは、1つの連続した仮想アドレス空間が表示されます。

アプリケーションは、アドレス空間のどの部分がローカルメモリにマップされ、別のNUMAノードのメモリにマップされるかをどのように伝えることができますか?

答えがアプリケーションに通知できない場合、OSはローカル物理メモリではなく別のNUMAノードの物理メモリに仮想ページをマップするタイミングをどのように決定しますか?

答えて

1

簡単な答えは、プログラムに/ proc/self/numa_mapsを表示させることです。 出力例は次のようになり:

$ cat /proc/self/numa_maps # dumps current zsh numa_maps 
55a4d27ff000 default file=/usr/bin/zsh mapped=177 N0=177 kernelpagesize_kB=4 
55a4d2ab9000 default file=/usr/bin/zsh anon=2 dirty=2 N0=2 kernelpagesize_kB=4 
55a4d2abb000 default file=/usr/bin/zsh anon=6 dirty=6 N0=4 N1=2 kernelpagesize_kB=4 
55a4d2ac1000 default anon=9 dirty=9 N0=4 N1=5 kernelpagesize_kB=4 

各行に示される最初のフィールドは、の/ proc/PID /マップからの出力との相関を可能にする開始アドレスです。次に、N<node>=<pages>は、各ノードに割り当てられているページの数を示します。

したがって、メモリー領域のNUMAノード番号を知る必要がある場合は、このファイルの出力でbisect検索を実行します。ここ

いくつかのより多くの情報:より良いNUMAのスケジューリングに向けて

https://www.kernel.org/doc/Documentation/vm/numa_memory_policy.txt https://lwn.net/Articles/486858/

関連する問題