プロセスによって割り当てられたメモリがどこにあるかを調べます。

プロセスによって割り当てられたメモリがどこにあるかを調べます。

特定のプロセスにメモリが割り当てられる場所を調べたいと思います。

より具体的には、私は2つの物理CPUを持つccNUMAシステムでOpenMPパラレルFortranバイナリを実行しています。私が懸念しているのは、このプログラムが変数を初期化するときに最初のタッチルールに違反することです。これにより、メモリが不均衡な方法で割り当てられます。つまり、ほとんどのメモリが2つのCPU間でバランスを取るのではなく、1つの物理CPUアドレス空間に割り当てられます。その結果、メモリ帯域幅が制限されたアプリケーションのスケーラビリティが低下します。

残念ながら、ソースコードにアクセスすることはできません。したがって、メモリ割り当てを調べるのが良い方法のようです。他のアイデアも大歓迎です。

コメントに基づいて編集:OpenSUSE Leap 42.3、カーネルバージョン4.4.103-36-default

ベストアンサー1

Linuxでは、次のコマンドを使用してプロセスの仮想アドレス空間を照会できます。工程(5)&マッピング(1)

したがって、プロセス1234の場合は、cat /proc/1234/mapsを実行しますpmap 1234cat /proc/1234/numa_maps

また、見ることができます沼(7)numa_maps(5)メモリポリシー設定(2)デジタル化(8)

おすすめ記事