2017-05-24 8 views
0

プログラムに必要なメモリ量を把握しようとしています。私はこのプログラムの複数のインスタンスを実行する必要があり、私は必要な追加RAMがどれくらいあるか把握したい。私はいくつかの研究を行なったし、私はメモリの使用量を見つけるために:私が正しく理解している場合、私に次のようプロセスがLinuxで使用している物理メモリの量を調べる

Mem: 32880876k total, 7573308k used, 25307568k free, 192956k buffers 
Swap: 8241148k total,  0k used, 8241148k free, 4800560k cached 

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
27464 root  20 0 3107m 1.9g 19m S 99.6 6.0 0:37.78 krypton 

RESを与えたトップは、実際に存在するメモリの量が常駐メモリでありますRAM。プログラムの2つのインスタンスを実行したとき、私は両方のRESフィールドがそれぞれ約5Gbであったことに気付きましたが、使用されたメモリの合計(上段に表示)は10Gbまで上がらず、 1Gb。

これについていくつかの調査を行い、RESにも共有メモリが含まれていることがわかりました。上記と同じシナリオを使用して、共有メモリSHRがそれぞれ約4.7Gbであったことに気付きました。したがって、単純な減算を実行すると約0.3Gbになるので、プログラムのインスタンスを2回実行すると4.7Gb +(0.3Gb)* 2 = 5.3GbのRAMが必要になることを意味しますか? SHRメモリには仮想メモリも含まれていますか?

もしそうなら、RAMから来るメモリの量を調べるためにSHRからVIRTを差し引く必要がありますか?このメモリ使用量が直線的に上がる場合、20インスタンスで4.7Gb +(0.3Gb)* 20 = 10.7GbのRAMを使用するか?

+1

VIRT、RES、SHRおよびその他すべてのプロセスメトリックを無視します。グローバル使用メモリ値(最上行)を見てください。 1つのインスタンスを実行し、値を確認します。 2つのインスタンスを実行し、値を確認します。続けてもう一度繰り返します。グラフをプロットする。推定する。 –

答えて

0

/proc/pid/smapsを調べたいとします。 2つのインスタンスを実行し、Private_ *フィールドを探します。

関連する問題