プログラムに必要なメモリ量を把握しようとしています。私はこのプログラムの複数のインスタンスを実行する必要があり、私は必要な追加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を使用するか?
VIRT、RES、SHRおよびその他すべてのプロセスメトリックを無視します。グローバル使用メモリ値(最上行)を見てください。 1つのインスタンスを実行し、値を確認します。 2つのインスタンスを実行し、値を確認します。続けてもう一度繰り返します。グラフをプロットする。推定する。 –