コピーオンライトページなしでメモリをどのように測定しますか?


8

共有ページとコピーオンライトページを二重にカウントせずに、(フォークされた)プロセスのセットが占めるRSSメモリの合計をどのように測定できますか?


1
非常に興味深い質問、+ 1- /proc/*/mapファイルをより深く分析することで可能になるはずですが、それを行うことができるツールを見つけたことはありません。主な問題は、従うべきデータ構造が見た目よりはるかに複雑であることです。ここで良い答えが得られない場合は、おそらくunix SEも試すことができます。
peterh-モニカを2015年

回答:


4

私はこれのために自分のユーティリティを作成することになりました:https : //gist.github.com/Eugeny/04ccfe8accf4bc74b0ca

私はinitテストのために(pid 1)に対してそれを実行し、報告された合計は物理的なRAM使用量(htopによる)にほぼ等しいので、いくぶん正しいと思います。

使用例:

~ » pstree -ap 15897
zsh,15897
  └─sudo,9783 make rundev
      └─make,9784 rundev
          └─sh,9785 -c cd ajenti-panel && ./ajenti-panel -v --autologin --plugins ../plugins --dev
              └─python ./ajenti,9786
                  ├─./ajenti-panel ,9834                              
                  ├─./ajenti-panel ,9795                     
                  └─{python ./ajenti},9796

~ » sudo ./memuse.py 15897
PID                 Commandline                          Frames (+unique)           VMEM
 - 15897            (/usr/bin/zsh                  ):      1776  +1776           7104 KB
  -  9783           (sudo make rundev              ):       608  +408            2432 KB
   -  9784          (make rundev                   ):       261  +98             1044 KB
    -  9785         (/bin/sh -c cd ajenti-panel && ):       166  +48              664 KB
     -  9786        (python ./ajenti-panel -v --aut):      9279  +8977          37116 KB
      -  9795       (./ajenti-panel worker [restric):      7637  +1334          30548 KB
      -  9834       (./ajenti-panel worker [session):      8972  +2639          35888 KB
----------------------------------------------------------------------------------------
TOTAL:                                                    15280                 61120 KB

2

すべてのマッピングを繰り返し処理してアドレスを比較することなく、どのプロセスがどのマップを共有するかを知るためのツールで明確に定義された方法はありません。

ただし、LinuxはProportional set sizeと呼ばれる合理的な見積もりを提供します。これは/ proc / [pid]> / mapsで報告されます。

この値は、マッピングのサイズを、同じマッピングが開いている兄弟/親プロセスの数で割った値です。

したがって、1MiBのマッピングが開いているプログラムに加えて、他の4つのプロセスと共有される1MiBの場合、比例セットのサイズは1MiB +(1Mib / 4)または1.250 MiBです。この場合のRSSは2MiBです。

使用中の実際のメモリの「適切な見積もり」を計算するためにPSSを使用する、htopの浮動小数点のパッチがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.