一般的なソフトウェアのメモリ使用量が誇張されていますか?

一般的なソフトウェアのメモリ使用量が誇張されていますか?

複数のプロセスが同じ共有ライブラリ(Gtkなど)を使用しているとします。おそらくmmapライブラリファイルと物理RAMは共有されますか?

ただし、システム・モニターに見られるように、各プロセスのメモリー・サイズにライブラリー・サイズが追加され、数字が膨張します。これは正しいですか?

答え1

実際のメモリ計算は共有メモリとプライベートメモリを分離しますが、一部のツールはプロセスメモリ使用量を表示するときにそれを集計します。さらに、cgroupはプロセスが使用するメモリに課金するため、cgroupに最大メモリ制限がある場合はこれが重要です。

これは、プロセスのメモリ使用量を増やすのではなく、実際にそのメモリを使用することです。ただし、プロセスグループの合計メモリ使用量を表示し、合計された合計メモリ使用量のみを表示すると、実際の使用量よりも結果が膨らみます。 cgroup内で正しく計算する必要がありますが、各プロセスで使用されているライブラリを詳しく調べる必要はありません。共有ライブラリが再利用される回数を簡単に知ることはできません。

したがって、プロセスグループの実際のメモリ使用量を知りたい場合、そのプロセスをすべて同じメモリcgroupに追加することが合理的であると思われる場合は、正しい答えを提供します。

関連情報