ps コマンドによるメモリー使用量の判別
ps コマンドは、個々のプロセスのメモリー使用率のモニターにも使用できます。
ps v PID コマンドは、次のように、 個々のプロセスのメモリー関連の統計情報の最も広範囲の報告を提供します。
- ページ・フォールト
- タッチされた作業セグメントのサイズ
- メモリー内の作業セグメントとコード・セグメントのサイズ
- テキスト・セグメントのサイズ
- 常駐セットのサイズ
- このプロセスで使用される実メモリーの割合
次に例を示します。
# ps v
PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND
36626 pts/3 A 0:00 0 316 408 32768 51 60 0.0 0.0 ps v
得られた ps レポートの最も重要な欄について、以下に説明します。
- PGIN
- ページ・フォールトが原因で起こったページインの数。 入出力はすべてページ・フォールトと分類されているので、これは基本的には入出力ボリュームの測定値です。
- SIZE
- プロセスのデータ・セクションの K バイト単位の仮想サイズ (ページング・スペース内) (他のフラグの場合は SZ と表示される)。 この数は、タッチされたプロセスの作業セグメント・ページ数に 4 をかけた数と同じです。一部の作業セグメント・ページが現在ページアウトされている場合、この数は使用している実メモリーの量より大きくなります。 SIZE には、専用セグメントとプロセスの共用ライブラリー・データ・セグメントのページが含まれます。
- RSS
- プロセスの実メモリー (常駐セット) サイズ (K バイト)。 この数は、メモリー内の作業セグメントとコード・セグメントの数の合計を 4 倍した値と同じです。コード・セグメント・ページは、プログラムの現在実行中の全インスタンスで共用されていることを覚えておいてください。 26 の ksh プロセスが実行中の場合、ksh 実行可能プログラムの任意のページの 1 つのコピーだけがメモリーにありますが、ps コマンドは、 そのコード・セグメント・サイズを ksh プログラムの各インスタンスの RSS の一部として報告します。
- TSIZ
- テキスト (共用プログラム) イメージのサイズ。 これは、実行可能ファイルのテキスト・セクションのサイズです。 実行可能プログラムのテキスト・セクションのページは、タッチされているときだけ、すなわち、 そこに分岐しているか、そこから読み込んでいるときだけメモリーに入れられます。 この数は、読み込むことができるテキストの量の上限を表しているだけです。 TSIZ 値は、実際に使用されているメモリーを反映していません。 この TSIZ 値は、dump -ov コマンドを実行可能プログラムに対して実行しても、表示することができます (例えば、dump -ov /usr/bin/ls)。
- TRS
- テキストの常駐セット (実メモリー) のサイズ。 これは、コード・セグメント・ページの数の 4 倍です。この数は、 複数インスタンスが実行しているプログラムのメモリー使用を過大に表します。 TRS 値は、XCOFF ヘッダーやローダー・セクションなどのコード・セグメントに他のページが含まれている場合があるので、TSIZ 値より高くなる可能性があります。
- %MEM
- メモリー内の作業セグメントとコード・セグメントのページ数の和を 4 倍して (RSS 値)、マシン内の使用中の実メモリーのサイズ (KB 単位) で割り、100 をかけ、至近の整数のポイントに丸めます。 この値は、プロセスが使用しようとする実メモリーのパーセンテージを伝えようとします。 運悪く、RSS と同様、他のプロセスとプログラム・テキストを共有しているプロセスのコストを、 大きく見積もりすぎる傾向があります。 さらに、至近のパーセンテージに切り上げると、システム内の 0.005 未満の RSS 値を持つシステムのプロセスは、すべて、 実メモリーのサイズをかけると %MEM が 0.0 になります。
注: ps コマンドは、
共有メモリー・セグメントまたはメモリー・マップ・セグメントが消費するメモリーは示しません。 多くのアプリケーションは共有メモリーまたはメモリー・マップのセグメントを使用するので、
これらのセグメントのメモリー使用を表示するには、svmon コマンドの方が適したツールです。