質問: フォークされたプロセス(linux)で使用されているメモリを確認するにはどうすればよいですか? この質問 から続きます。それが重要な場合、debian。一部のメモリがフォークされたプロセス間で共有されていることを理解しています。次に、フォークされたプロセスのプロセス/セットによって使用されているメモリの量をどのように判断できますか? この同様の質問 で推奨されているsmemツールを使用すると、次のような値が得られます。command swap uss pss rss /usr/sbin/spamd --create-pr 0 16820 24974 41628 spamd chil 0 19388 27581 44176 spamd chil 0 32328 40038 55708 スワップ列を理解しました。rss列は通常報告されるものです(例:ps)。 smemのドキュメントを読むと、ussはその子専用のメモリであり、pssはプロセス間で共有されるメモリの一部であるように思われます。ただし、ussをpssに追加すると、rssよりも高い値が得られるため、共有の意味は少なくなると思いました(したがって、おそらく誤って解釈しています)。私はsmemツールに縛られていません。プロセスが使用している実際のメモリの量をある程度正確に反映する「メモリ使用」数を取得する方法が必要です。
回答: 比例セットサイズは、おそらく、利用可能なプロセスごとのメモリ使用量の最良の数値です。これは、一意のセットサイズ+(共有ページ/共有プロセス数)です。したがって、1つのプロセスで44176ページが使用され、そのうち19388ページがそのプロセスに固有のものです。これは、24788が他の人と共有されていることを意味します。pssをuss +(共有ウェイト)と見なします。この場合の重みは8193で、これはこのプロセスに起因する共有メモリページ(24788)の割合です。ページを共有しているアプリケーションのインスタンスが多いほど、各プロセスの重みは低くなります。複数のプロセスにわたってpssを合計することができ、共有ページを2回以上カウントすることはありません。ただし、pssにはすでにussが含まれているため、ussとpssを合計してrssを期待することはできません。