プロセスごとのメモリー使用量

svmon -P コマンドは、現在システムで実行中のすべてのプロセスのメモリー使用率統計情報を表示します。

以下に、svmon -P コマンドの例を示します。
# svmon -P

--------------------------------------------------------------------------------
     Pid Command          Inuse        Pin     Pgsp    Virtual 64-bit Mthrd 16MB
   16264 IBM.ServiceRM    10075       3345     3064      13310      N     Y    N

     PageSize      Inuse        Pin       Pgsp    Virtual
     s   4 KB      10075       3345       3064      13310
     L  16 MB          0          0          0          0

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
   f001e         d work shared library text          s   4857     0   36  6823 
       0         0 work kernel seg                   s   4205  3335 2674  5197 
   b83f7         2 work process private              s    898     2  242  1098 
   503ea         f work shared library data          s     63     0   97   165 
   c8439         1 pers code,/dev/hd2:149841         s     28     0    -     - 
   883f1         - work                              s     21     8   14    26 
   e83dd         - pers /dev/hd2:71733               s      2     0    -     - 
   f043e         4 work shared memory segment        s      1     0    1     1 
   c0438         - pers large file /dev/hd9var:243   s      0     0    -     - 
   b8437         3 mmap mapped to sid a03f4          s      0     0    -     - 
   583eb         - pers large file /dev/hd9var:247   s      0     0    -     - 

--------------------------------------------------------------------------------
     Pid Command          Inuse        Pin     Pgsp    Virtual 64-bit Mthrd 16MB
   17032 IBM.CSMAgentR     9791       3347     3167      12944      N     Y    N

     PageSize      Inuse        Pin       Pgsp    Virtual
     s   4 KB       9791       3347       3167      12944
     L  16 MB          0          0          0          0

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
   f001e         d work shared library text          s   4857     0   36  6823 
       0         0 work kernel seg                   s   4205  3335 2674  5197 
     400         2 work process private              s    479     2  303   674 
   38407         f work shared library data          s    120     0  127   211 
   a83f5         1 pers code,/dev/hd2:149840         s     99     0    -     - 
   7840f         - work                              s     28    10   27    39 
   e83dd         - pers /dev/hd2:71733               s      2     0    -     - 
   babf7         - pers /dev/hd2:284985              s      1     0    -     - 
   383e7         - pers large file /dev/hd9var:186   s      0     0    -     - 
   e03fc         - pers large file /dev/hd9var:204   s      0     0    -     - 
   f839f         3 mmap mapped to sid 5840b          s      0     0    -     - 
[...]
このコマンド出力は、プロセスごとのグローバル・メモリー使用量と、報告される各プロセスで使用されるセグメントごとのメモリー使用量の、詳細情報を示します。 デフォルトのソート規則では、Inuse ページ数の多い順にソートされます。 ソート規則は、svmon コマンドの -u-p-g、または -v フラグを使用して変更できます。

システムのメモリーを使用する上位 15 プロセスの要約を表示するには、次のコマンドを使用します。

# svmon -Pt15 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'
--------------------------------------------------------------------------------
     Pid Command          Inuse        Pin     Pgsp    Virtual 64-bit Mthrd 16MB
   16264 IBM.ServiceRM    10075       3345     3064      13310      N     Y    N
   17032 IBM.CSMAgentR     9791       3347     3167      12944      N     Y    N
   21980 zsh               9457       3337     2710      12214      N     N    N
   22522 zsh               9456       3337     2710      12213      N     N    N
   13684 getty             9413       3337     2710      12150      N     N    N
   26590 perl5.8.0         9147       3337     2710      12090      N     N    N
    7514 sendmail          9390       3337     2878      12258      N     N    N
   14968 rmcd              9299       3340     3224      12596      N     Y    N
   18940 ksh               9275       3337     2710      12172      N     N    N
   14424 ksh               9270       3337     2710      12169      N     N    N
    4164 errdemon          9248       3337     2916      12255      N     N    N
    3744 cron              9217       3337     2770      12125      N     N    N
   11424 rpc.mountd        9212       3339     2960      12290      N     Y    N
   21564 rlogind           9211       3337     2710      12181      N     N    N
   26704 rlogind           9211       3337     2710      12181      N     N    N

このPid16 264 は、メモリー使用量が最も多いプロセス ID です。 このCommandコマンド名を示します。この場合、IBM®.ServiceRM.Inuse列 (プロセスによって使用されるセグメントからの実メモリー内のページの合計数) には、10 075 ページが表示されます。 各ページは 4 KB です。 このPin列 (プロセスによって使用されるセグメントから固定されたページの合計数) には、3 345 ページが表示されます。 このPgspプロセスによって使用されるページング・スペース・ページの合計数である列には、3 064 ページが表示されます。 「Virtual」欄 (プロセス仮想スペース内の合計ページ数) は、13 310 を示しています。

詳細セクションには、要約セクションに示されている各プロセスの各セグメントに関する情報が表示されます。 これには、仮想 Vsid および実効 Esid セグメント ID が含まれます。 Esid は、対応するページにアクセスするために使用されるセグメント・レジスターを反映します。 セグメントのタイプも、その記述 (永続セグメントのファイルのボリューム名と i ノードを含む、セグメントのテキスト記述) とともに表示されます。 レポートには、セグメントがバッキングされるページのサイズの詳細も示されます。ここで、 s は 4 KB ページを表し、 L は 16 MB ページ、RAM 内のページ数 Inuse、RAM 内のピン・ページ数Pin、ページング・スペース内のページ数 Pgsp、および仮想ページ数 Virtualを表します。

さらにオプションを使用して、より詳細な情報を表示することができます。 -j オプションを使用すると、永続セグメントのファイルのパスが表示されます。 -l オプションを使用するとセグメントの詳細情報が、-r オプションを使用すると各セグメントで使用されているメモリー範囲が、それぞれ表示されます。 svmon コマンドで -l-r、および -j オプションを指定した場合の例を以下に示します。
# svmon -S f001e 400 e83dd -l -r -j

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
   f001e         d work shared library text          s   4857     0   36  6823 
                   Addr Range: 0..60123
                   Shared library text segment
     400         2 work process private              s    480     2  303   675 
                   Addr Range: 0..969 : 65305..65535
                   pid(s)=17032
   e83dd         - pers /dev/hd2:71733               s      2     0    -     - 
                        /usr/lib/nls/loc/uconvTable/ISO8859-1                  
                   Addr Range: 0..1
                   pid(s)=17552, 17290, 17032, 16264, 14968, 9620

このAddress Range永続セグメントまたはクライアント・セグメントの場合は 1 つの範囲を指定し、作業セグメントの場合は 2 つの範囲を指定します。 永続またはクライアント・セグメントの場合の範囲は、 「0..x,」の形式をとりますが、この x は今まで使用された仮想ページの最大数です。 作業セグメントの範囲フィールドは、「0..x : y..65535」とすることができます。0..x にはグローバル・データが含まれていて、 上方に向かって増え、y..65535 にはスタック領域が含まれていて、下方に向かって増えます。 アドレス範囲の場合、作業セグメントでは、スペースは両方の端から割り当てられ、 中央に向かって進みます。 作業セグメントが専用でない場合 (カーネルまたは共用ライブラリー)、 スペースは別の方法で割り当てられます。

上記の例では、セグメント ID は以下のようになります。400専用作業セグメントです。そのアドレス範囲は次のとおりです。0..969 : 65305..65535. セグメント IDf001e共用ライブラリー・テキスト作業セグメントです。そのアドレス範囲は次のとおりです。 0..60123.

セグメントは、複数のプロセスで使用することができます。 このようなセグメントからの実メモリー内の各ページは、以下のように処理されます。Inuseそのセグメントを使用する各プロセスのフィールド。 したがって、以下の合計は、Inuse実メモリー内のページの総数を超える可能性があります。 以下についても同じことが当てはまります。PgspおよびPinフィールド 要約セクションに表示される値は、以下の合計で構成されます。Inuse,PinおよびPgsp、およびプロセスによって使用されるすべてのセグメントの Virtual カウンター。

この例では、e83dd セグメントは、PID が 17552、17290、17032、16264、14968、および 9620 の、いくつものプロセスによって使用されています。