# 章 3. kpm メイン ウィンドウ

# 3.1. フィールドの説明

PID - プロセス ID

  各プロセスは固有のプロセス ID 番号を持っています。プロセス ID は 1 から始まり数が大きくなっていきます。新しいプロセスが生成 されると、次の未使用の PID が割り当てられます。PID は(現状では) 16 ビットの符号つき整数であり、したがって 32767 で最初に戻ります。 これは通常動作ですから心配する必要はありません。

PPID - 親プロセス ID

  各プロセスには 1 個の親プロセスがあります。例外はプロセス 1 (init)で、これはプロセス階層の頂点にあり、親はありません。

PGID - プロセス グループ ID

  各プロセスはいずれかのプロセス グループに属しています。 プロセス グループはシグナルの分配に使われたり、端末の入力要求を 調停したりするのに使用されます。端末と同じプロセス グループの プロセスはフォアグラウンドに置かれ入力ができる状態を与えられます。 他のプロセスは、入力しようとした時にシグナルでブロックされます。

SID - セッション ID

  セッション ID は主に、端末の回線断時の動作を決定するのに 使用されます。

TTY - 制御端末

  制御端末 (tty) は通常そのプロセスを起動したデバイス (シリアル ポートや pty 等)で、プロセスの入出力に使用されます。 全てのプロセスが制御端末を持っているわけではありません。kpm は /dev ディレクトリを調べて端末の名前を特定しようとしますが、 失敗することもあります。スペースを節約するため、端末名の末尾の 2 文字のみが表示されます(/dev/ttyp6 は p6 と表示されます)。

TPGID - 端末を所有するプロセス グループ ID

  使用中の端末はプロセスによって所有されています。ここには そのプロセスの PGID が表示されます。

USER - プロセス所有者

  これはプロセスを所有する(実)ユーザ名です。実効ユーザ ID と 実ユーザ ID が異なる場合は、そのことが後続の "*" あるいは "+" に よって示されます。アスタリスクは実効ユーザがスーパーユーザである 時に使われます(これは普通バイナリが root に set-uid されている ことを表します)。

NICE - タイム シェアリングの優先順位

  nice 値はプロセスが実効を許可される頻度とタイムスライスの 長さを決定します。この値は -20 から 20 の範囲にあり、0 がデフォルト です。低い値ほどプロセスに多くの CPU 時間が割り当てられます。 スーパーユーザのみが nice 値を下げることができます。

PRI - 次回のタイムスライスの長さ

  これはプロセスに与えられる次のタイムスライスの最大長を表します (実行中のプロセスについては、現在のタイムスライスの残りを表します)。 この数値は -20 から 20 までの範囲にスケールし直されています。小さい 値ほどタイムスライスが長いことを表します。

PLCY - スケジューリング方針

  FIFO (F) と ラウンド ロビン (R) はリアルタイム スケジューリング 方針です。その他 (O) は通常の UNIX タイム シェアリング方針です。 F および R のプロセスは 1 から 99 の間のリアルタイム優先順位が 割り当てられています。あるプロセスは上位の優先順位に実行可能な プロセスがない時に実行されます。ラウンド ロビン プロセスは 1 タイムスライスの長さの間実行され、その後同じ優先順位のキューの 末尾に置かれます。FIFO プロセスは(スリープやブロッキングのために) CPU 時間を明け渡すまで、もしくは上位の優先順位のプロセスに 遮られるまで、実行が続けられます。スーパーユーザ (root) のみが、 スケジューリング方針を変更することができます。

RPRI - リアルタイム優先順位

  リアルタイム プロセス (FIFO や ラウンド ロビン) は、1 から 99 までの優先順位を持っています。あるプロセスは、それより優先順位の 低い他のプロセスを退けます。通常のタイム シェアリング プロセス (方針 O)は、この優先順位が 0 です。スーパーユーザ (root) のみが リアルタイム優先順位を変更することができます。

MAJFLT - メジャー フォールトの発生回数

  ページ フォールトはプロセスが RAM 上に存在しないメモリ ページの 読み書きをしようとする時に発生します。メジャー ページ フォールトは ディスク アクセスが生じる場合で、例えばメモリ ページをスワップ イン、アウトする場合です。

MINFLT - マイナー フォールトの発生回数

  ページ フォールトはプロセスが RAM 上に存在しないメモリ ページの 読み書きをしようとする時、あるいは書き込みできないページに書き込みを しようとした場合に発生します。マイナー フォールトはディスク アクセス の生じない場合で、例えばコピー オン ライトの共有ページに書き込みを 行う場合です。

TRS - テキスト常駐セット サイズ (キロバイト)

  これは現在 RAM 上に存在するプロセスのテキスト(すなわち実行 コード)のサイズです。

DRS - データ常駐セット サイズ (キロバイト)

  これは現在 RAM 上に存在するプロセスのデータ(実行コード以外 の部分)のサイズです。

SIZE - プロセスの仮想イメージ サイズ (キロバイト)

  これはプロセスのイメージの合計サイズです。これには全ての コード、データ、プロセスが使用している共有ライブラリが、スワップ アウトされているページまで含まれています。

SWAP - スワップ デバイス上のサイズ (キロバイト)

  これは単に SIZE と RSS の差で、プロセスのどれだけの部分が ディスク上に存在するかを表しています。

RSS - 常駐セット サイズ (キロバイト)

  これはプロセスの実際に RAM に存在する部分(コードおよびデータ) の、共有ライブラリを含めた値です。これはプロセスが使用している RAM の量の正当な概算値を与えています。

SHARE - 共有メモリ (キロバイト)

  これはプロセスが他のプロセスと共有するメモリの量を示します。 この部分は実際に他のプロセスによって使われているとは限らず、 単に使うことができる、というだけです。

DT - ダーティ ページの数

  これは前回ディスクへ書き込みが行われてから変更が行われた RAM 上のページの数(バイト数ではありません)を表します。ダーティ ページは解放したり他の用途で使用する前にディスクに書き込まれる 必要があります。

STAT - プロセスの状態

  プロセスは常に、次のいずれかの状態になっています:

  - R (実行): プロセスが CPU で実行中あるいは実行可能。

  - S (休眠): プロセスがイベントの発生(入出力やタイマー等)を待機中。

  - D (割り込み不可の休眠): プロセスがイベントの発生を待機していて 割り込みを掛けることができない(通常デバイス ドライバ内での待機)。

  - T (停止): プロセスが停止中、あるいは他のプロセスにトレース されている。

  - Z (ゾンビ): プロセスが終了したが、まだその死を親に見取られていない。

  - プロセスが完全にスワップ アウトしている(常駐ページがない) 時には、このフィールドに 'W' が表示されます。(これはカーネル プロセスでも同じです。例えば kswapd。)

FLAGS - プロセス フラグ (16進)

  ここにはプロセスの状態に関する追加情報が入っています。 詳細は Linux のカーネル ソースを参照してください。

WCHAN - プロセスがスリープ中の関数

  プロセスが何か起こるのを待機している時、ここには 止まっている所のカーネル関数が表示されます。(頭の do_ や sys_ は 短くするために省略されます。)

UID - ユーザ IDの数値表示

  これはプロセスを所有する(実)ユーザの ID です。

%WCPU - 重みつき CPU 使用率

  これはプロセスが使用している CPU 時間のパーセンテージを 最近 30 秒間にわたって(重みを指数的に減らした)平均を取った ものです。

%CPU - 前回更新後の CPU 使用率

  これは前回 kpm のプロセス テーブルを更新してから、どれだけ CPU 時間が使用されたかを示します。

%MEM - メモリ使用率

  これはプロセスが RAM のどれだけの部分を占有しているか(常駐量) を表しています。共有ライブラリも計算に入っていますから、誇張 された数値です。

START - プロセス開始時刻

  プロセスが生成された時刻です。

TIME - 使用 CPU 時間計

  プロセスが開始してからどれだけの CPU 時間を使用したかを示します。

COMM - プロセスを起動したコマンド

  プロセスを開始した時のコマンド(ファイル名)です。長い名前は 短く切られます。

CMDLINE - プロセスを起動したコマンド ライン

  プロセスを起動したコマンドラインで引数も含まれています。 オプション メニューで「コマンドのパスを表示」が選択していないと、 コマンド名の前に書かれたパスは省略されます。スワップ アウト されたプロセスはコマンド名を括弧でくくっただけの表示になります。 (これはカーネル プロセスでも同様です。)