中年engineerの独り言 - crumbjp

LinuxとApacheの憂鬱

/proc/[pid]/stat まとめ

いつも忘れるので、まとめておくことにした



stat

No フィールド scanf 説明
0 pid %d プロセス ID。
1 comm %s 括弧でくくられた実行形式のファイル名。実行形式がスワップアウトされているかどうかによらず、見ることができる。
2 state %c "RSDZTW" のどれか 1 文字。
R は実行中 (running)、
S は割り込み可能な休眠状態 (sleeping in an interruptible wait)、
D は割り込み不可能なディスクスリープの待機状態 (waiting in uninterruptible disk sleep)、
Z はゾンビ状態 (zombie)、
T はトレースされている (traced) か (シグナルにより) 停止している状態 (stopped)、
W はページング中 (paging) を表している。
3 ppid %d 親プロセスの PID。
4 pgrp %d プロセスのプロセスグループ ID。
5 session %d プロセスのセッション ID。
6 tty_nr %d プロセスの制御端末 (マイナー・デバイス番号はビット 31〜20 と 7〜0 にまたがって格納され、 メジャー・デバイス番号はビット 15〜8 に格納される)。
7 tpgid %d プロセスの制御端末のフォアグランド・プロセス・グループの ID。
8 flags %u プロセスのカーネルフラグワード。 ビットの意味は、 で定義されている PF_* を参照すること。 詳細はカーネルのバージョンに依存する。
9 minflt %lu プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリページへのロードを必要としないフォールト) の回数。
10 cminflt %lu (そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。
11 majflt %lu プロセスが引き起こしたメジャーフォールト (major fault、ディスクからメモリページへのロードを必要とするフォールト) の回数。
12 cmajflt %lu (そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。
13 utime %lu このプロセスがユーザーモードでスケジューリングされた時間の合計。
clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。
この値にはゲスト時間 guest_time (仮想 CPU の実行に消費された時間) も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーションにおいて、ゲスト時間分を計算に入れ損ねないようにするためである。
14 stime %lu プロセスのカーネルモードでの実行時間 (単位 jiffies)。 このプロセスがカーネルモードでスケジューリングされた時間の合計。
clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。
15 cutime %ld このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、 ユーザモードでスケジューリングされた時間の合計。
clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。 (times(2) も参照すること。) この値にはゲスト時間 cguest_time (仮想 CPU を実行するのに消費した時間、下記参照) も含まれる。
16 cstime %ld このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、カーネルモードでスケジューリングされた時間の合計。
clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。
17 priority %ld (Linux 2.6 の場合の説明) リアルタイム・スケジューリングポリシー (下記の policy ; sched_setscheduler(2) 参照) で動作しているプロセスでは、
この 値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし た値) となる。値は -2 から -100 までの範囲の数値で、 それぞれリアルタイム優先 度の 1 から 9 に対応する。
リアルタイム以外のスケジューリングポリシーで動作し ているプロセスでは、 この値はカーネル内で管理されている nice 値そのもの (setpriority(2)) となる。 カーネルは nice 値を 0 (高) から 39 (低) の範囲 の値として保持しており、 それぞれユーザに見える nice 値の -20 から 19 に対応 する。
Linux 2.6 より前では、このプロセスに割り当てられたスケジューリング 重みを変換した値が表示されていた。
18 nice %ld nice 値 (setpriority(2) 参照)。 19 (最低優先) から -20 (最高優先) の範囲の値である。
19 num_threads %ld このプロセスのスレッド数 (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除されたフィールドの 場所埋めとして 0 にハードコードされていた。
20 itrealvalue %ld インターバルタイマによって、次に SIGALRM がプロセスへ送られるまでの時間 (単位 jiffies)。 カーネル 2.6.17 以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされている。
21 starttime %llu The time the process started after system boot. In kernels before Linux 2.6, this value was expressed in jiffies. Since Linux 2.6, the value is expressed in clock ticks (divide by sysconf(_SC_CLK_TCK)).
22 vsize %lu 仮想メモリのサイズ。単位はバイト。
23 rss %ld Resident Set Size。プロセスが持っている実メモリ上のページ数。 これはちょうどテキスト、データ、スタック空間に使われているページ数である。 デマンドロードされていないページや スワップアウトされたページの数は含んでいない。
24 rsslim %lu このプロセスの rss の現在のソフト・リミット (バイト単位)。 getrlimit(2) の RLIMIT_RSS の説明を参照。
25 startcode %lu プログラムテキストが実行可能であるような領域の先頭アドレス。
26 endcode %lu プログラムテキストが実行可能であるような領域の末尾アドレス。
27 startstack %lu スタックの開始アドレス (すなわち、スタックの底)。
28 kstkesp %lu 現在の ESP (スタックポインタ) の値。 プロセスのカーネルスタックページにある。
29 kstkeip %lu 現在の EIP (インストラクションポインタ) の値。
30 signal %lu 処理待ちのシグナルのビットマップ。 10 進数で表示される。このフィールドは廃止予定である。リアルタイム・シグナルに関する情報は表示されないからである。代わりに /proc/[pid]/status を使うこと。
31 blocked %lu ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
32 sigignore %lu 無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
33 sigcatch %lu 捕捉された (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 リアルタイム・シグナルに関する情報は表示されないからである。 代わりに /proc/[pid]/status を使うこと。
34 wchan %lu プロセスが待っている「チャネル」。これはシステムコールのアドレスであり、 文字名が必要ならば (アドレスとシステムコール名との) 対応表から見つけられる (もし /etc/psdatabase [訳注: このファイル名はパッケージによる] を更新 しているならば、 ps -l して WCHAN フィールドを見よ)。
35 nswap %lu スワップされたページ数 (メンテナンスされていない)。
36 cnswap %lu 子プロセスの nswap の累計 (メンテナンスされていない)。
37 exit_signal %d プロセスが死んだときに親プロセスに送られるシグナル。
38 processor %d このプロセスを最後に実行した CPU の番号。
39 rt_priority %u リアルタイム・スケジューリングの優先度。 リアルタイム・ポリシーの元でスケジューリングされるプロセスでは 1 から 99 の範囲の値となり、 リアルタイム以外のスケジューリングポリシーのプロセスでは 0 となる (sched_setscheduler(2) 参照)。
40 policy %u スケジューリング・ポリシー (sched_setscheduler(2) 参照)。 値は、 linux/sched.h の SCHED_* 定数を使ってデコードすればよい。
41 delayacct_blkio_ticks %llu (clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
42 guest_time %lu プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。
clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。
43 cguest_time %ld プロセスの子プロセスのゲスト時間。
clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。