一般的なソフトウェアのメモリ使用量は誇張されているのでしょうか?

一般的なソフトウェアのメモリ使用量は誇張されているのでしょうか?

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

ただし、システム モニターに表示される各プロセスのメモリ サイズにライブラリのサイズが追加されるため、数値が誇張されます。これは正確ですか?

答え1

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

これはプロセスのメモリ使用量を誇張するものではなく、実際にそのメモリを使用しています。しかし、プロセスのグループの合計メモリ使用量を調べ、合計のみを見ると、結果は実際の使用量よりも膨らんでしまいます。各プロセスが使用しているライブラリを調べずに共有ライブラリが何回再利用されているかを知る簡単な方法はありませんが、cgroups では正しく計算されるはずです。

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

関連情報