2011年3月26日土曜日

psコマンド使い方

ps (Report Process Status) コマンドはプロセスが持つ情報を出力します。すなわち、カーネル内部が保持するプロセスディスクリプタに保存された各種情報に、ユーザ空間からアクセスするツールです。

ps
書式        ps [オプション] [プロセス番号n]
オプション
u        ユーザー名と開始時刻を表示する
a        すべてのユーザープロセスを表示する
x        制御端末のないプロセス情報を表示する
l        より詳細な情報を表示する
f        プロセスの親子関係をツリー状に表示する
w        1プロセスあたりの表示行数を増やす
j        ジョブ形式で表示する



以下は ps auxw の表示です。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%882011-03-2616.36.16-2011-03-26-16-33.png

%CPU:osコマンドを実行した際のプロセスのCPU使用率
%MEM:プロセスが消費している物理メモリ量。ファク分立で表示
VSZ:そのプロセスが確保している仮想メモリ領域のサイズ
RSS:そのプロセスが確保している物理メモリ領域のサイズ
STAT:プロセスの状態
TIME:CPUを使った時間を表示する項目


物理メモリと仮想メモリ
VSZ(Virtual Set Size)はプロセスが確保した仮想メモリ領域のサイズ
RSS(Resident Set SIze)はプロセスが確保した物理メモリ領域のサイズ

どうして2つのメモリの指標があるのでしょうか?
仮想メモリとは、プログラムがメモリを使用するにあたって、物理的なメモリを扱うのではなく、物理メモリを抽象化したソフトウェア的なメモリを扱わせる機構です。ハードウェアが提供する「ページング(Paging)」と呼ばれる仮想メモリ機構を使って実現し、OSがその仮想メモリ領域の管理を行います。

仮想メモリ領域は、プロセスがカーネルからもらったその新品の仮想メモリ領域に対して書き込みを行った時点ではじめて物理メモリ領域との対応付けが行われます。

仮想メモリ機構によって得られる恩恵は大きく、ざっと以下のことを挙げることができます。
  • 本来物理メモリに搭載されている容量以上のメモリを扱えるかのようにプロセスにみせかけることができる
  • 物理メモリ上ではばらばらの領域を連続した一つのメモリ領域としてプロセスにみせかけることができる
  • それぞれのプロセスに対して、プロセスごとに独立したメモリ空間を持っているように見せかける
  • 物理メモリが不足した場合は、長時間使われていない領域の、仮想メモリと物理メモリ領域の対応を解除する。解除されたデータはディスクなどに対比してまた必要になったときに元に戻す。いわゆる「スワップ(Swap)」
  • 異なる2つのプロセスが参照する仮想メモリ領域を、同一の物理メモリ領域に対応させることで、2つのプロセスでメモリの内容を共有する。IPC共有メモリなどはこの方法で実装される。
■スワップが発生しているときの対処方法
スワップが発生している場合は物理メモリが不足している証拠。
RSSサイズを見て、極端に大きなプロセスがないかなどを探っていけばよい。



CPU使用時間
TIMEはプロセスが実際にCPUを使った時間を表示する項目です。つまり、プロセスディスクリプタに記録されたCPU使用時間のことです。

CPU負荷が極端に高いシステムがあったとき、psのTIMEを調べれば、どのプロセスがCPUをたくさん使っているのかを確認することができます。

0 件のコメント:

コメントを投稿