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

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

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

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

さらにオプションを使用して、より詳細な情報を表示することができます。 -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 です。 セグメント ID f001e は共用ライブラリー・テキスト作業セグメントで、 そのアドレス範囲は 0..60123 です。

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

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