トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

LN-proc

 linux の /proc の備忘録

 FreeBSD の場合には
     fstab に次の行を追加するか
     proc                /proc           procfs  rw,noauto       0       0
     もしくは
     mount /proc
     を実行

/proc/[pid]/stat

kernel 2.6 は (44) ??
プロセスの状態についての情報。 これは ps(1)  で使われ、 カーネルのソースファイル fs/proc/array.c で定義されている。
各フィールドを順番に、 scanf(3)  のフォーマット指定子付きで以下に示す。
       (1) pid  %d
                       プロセス ID。
       (2) comm  %s
                       括弧でくくられた実行形式のファイル名。  実行形式がスワップアウトされているかどうかによらず、
                       見ることができる。
       (3) state  %c
                       プロセスの状態を示す、以下のいずれか 1 文字。
                       R  実行中 (Running)
                       S  Sleeping in an interruptible wait
                       D  Waiting in uninterruptible disk sleep
                       Z  ゾンビ (Zombie)
                       T  (シグナルでの) 停止、または (Linux 2.6.33 より前では) トレースによる停止
                       t  トレースによる停止 (Tracing stop) (Linux 2.6.33 以降)
                       W  ページング中 (Linux 2.6.0 より前のみ)
                       X  死亡 (Dead) (Linux 2.6.0 以降)
                       x  死亡 (Dead) (Linux 2.6.33 から 3.13 までのみ)
                       K  Wakekill (Linux 2.6.33 から 3.13 までのみ)
                       W  Waking (Linux 2.6.33 から 3.13 までのみ)
                       P  Parked (Linux 3.9 から 3.13 までのみ)
        (4) ppid  %d
                       このプロセスの親プロセスの PID。
        (5) pgrp  %d
                       プロセスのプロセスグループ ID。
        (6) session  %d
                       プロセスのセッション ID。
        (7) tty_nr  %d
                       プロセスの制御端末 (マイナーデバイス番号はビット 31〜20 と  7〜0  にまたがって格納され、  メ
                       ジャーデバイス番号はビット 15〜8 に格納される)。
        (8) tpgid  %d
                       プロセスの制御端末のフォアグランド・プロセスグループの ID。
         (9) flags  %u
                       プロセスのカーネルフラグワード。 ビットの意味は、 <linux/sched.h> で定義されている PF_* を参
                       照すること。 詳細はカーネルのバージョンに依存する。
                       このフィールドのフォーマットは Linux 2.6 より前では %lu であった。
         (10) minflt  %lu
                       プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリーページへのロード
                       を必要としないフォールト) の回数。
         (11) cminflt  %lu
                       (そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。
         (12) majflt  %lu
                       プロセスが引き起こしたメジャーフォールト  (major fault、ディスクからメモリーページへのロード
                       を必要とするフォールト) の回数。
         (13) cmajflt  %lu
                       (そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。
         (14) utime  %lu
                       このプロセスがユーザーモードでスケジューリングされた時間の合計。 clock tick 単位で計測される
                       (sysconf(_SC_CLK_TCK) で割った値が表示される)。 この値にはゲスト時間 guest_time (仮想 CPU の
                       実行に消費された時間) も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーション
                       において、ゲスト時間分を計算に入れ損ねないようにするためである。
         (15) stime  %lu
                       プロセスのカーネルモードでの実行時間   (単位  jiffies)。  このプロセスがカーネルモードでスケ
                       ジューリングされた時間の合計。 clock tick 単位で計測される (sysconf(_SC_CLK_TCK)  で割った値
                       が表示される)。
          (16) cutime  %ld
                       このプロセスの子プロセスで、終了待ち  (waited-for) のプロセスが、 ユーザーモードでスケジュー
                       リングされた時間の合計。 clock tick 単位で計測される (sysconf(_SC_CLK_TCK)  で割った値が表示
                       される)。 (times(2)  も参照すること。) この値にはゲスト時間 cguest_time (仮想 CPU を実行する
                       のに消費した時間、下記参照) も含まれる。
           (17) cstime  %ld
                       このプロセスの子プロセスで、終了待ち (waited-for) のプロセスが、カーネルモードでスケジューリ
                       ングされた時間の合計。  clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割った値が表示さ
                       れる)。
           (18) priority  %ld
                       (Linux   2.6   の場合の説明)   リアルタイムスケジューリングポリシー   (下記の    policy    ;
                       sched_setscheduler(2) 参照) で動作しているプロセスでは、 この 値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし た値) となる。値は -2 から -100 までの範囲の数値で、 それぞれリアルタイム優先 度の 1 から 99 に対応する。 リアルタイム以外のスケジューリングポリシーで動作し ているプロセスでは、 この値はカーネル内で管理されている nice 値そのもの(setpriority(2)) となる。 カーネルは nice 値を 0 (高) から 39 (低) の範囲 の値として保持しteおり、 それぞれユーザーに見える nice 値の -20 から 19 に対応 する。
                       Linux 2.6 より前では、このプロセスに割り当てられたスケジューリング  重みを変換した値が表示されていた。
             (19) nice  %ld
                       nice 値 (setpriority(2) 参照)。 19 (最低優先) から -20 (最高優先) の範囲の値である。
             (20) num_threads  %ld
                       このプロセスのスレッド数  (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除さ
                       れたフィールドの 場所埋めとして 0 にハードコードされていた。
             (21) itrealvalue  %ld
                       インターバルタイマーによって、次に SIGALRM がプロセスへ送られるまでの時間  (単位  jiffies)。
                       カーネル  2.6.17 以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされて
                       いる。
             (22) starttime  %llu
                       プロセスの起動時刻。システムが起動した時刻が起点である。 Linux 2.6 より前のカーネルでは、 こ
                       の値の単位は   jiffies  であった。  Linux  2.6  以降では、  値の単位はクロック  tick  である
                       (sysconf(_SC_CLK_TCK) で割った値となる)。
                       このフィールドのフォーマットは Linux 2.6 より前では %lu であった。
             (23) vsize  %lu
                       仮想メモリーのサイズ。単位はバイト。
             (24) rss  %ld
                       Resident Set Size。プロセスが持っている実メモリー上のページ数。 これはちょうどテキスト、デー
                       タ、スタック空間に使われているページ数である。 デマンドロードされていないページや スワップア
                       ウトされたページの数は含んでいない。
             (25) rsslim  %lu
                       このプロセスの rss の現在のソフトリミット (バイト単位)。 getrlimit(2) の RLIMIT_RSS の説明を
                       参照。
             (26) startcode  %lu
                       プログラムテキストが実行可能であるような領域の先頭アドレス。
             (27) endcode  %lu
                       プログラムテキストが実行可能であるような領域の末尾アドレス。
             (28) startstack  %lu
                       スタックの開始アドレス (すなわち、スタックの底)。
             (29) kstkesp  %lu
                       現在の ESP (スタックポインター) の値。 プロセスのカーネルスタックページにある。
             (30) kstkeip  %lu
                       現在の EIP (インストラクションポインター) の値。
             (31) signal  %lu
                       処理待ちのシグナルのビットマップ。 10 進数で表示される。このフィールドは廃止予定である。リア
                       ルタイムシグナルに関する情報は表示されないからである。代わりに  /proc/[pid]/status  を使うこと。
             (32) blocked  %lu
                       ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止
                       予定である。       リアルタイムシグナルに関する情報は表示されないからである。       代わりに
                       /proc/[pid]/status を使うこと。
             (33) sigignore  %lu
                       無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定
                       である。         リアルタイムシグナルに関する情報は表示されないからである。         代わりに
                       /proc/[pid]/status を使うこと。
             (34) sigcatch  %lu
                       捕捉された  (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定
                       である。         リアルタイムシグナルに関する情報は表示されないからである。         代わりに
                       /proc/[pid]/status を使うこと。
             (35) wchan  %lu
                       This  is  the "channel" in which the process is waiting.  It is the address of a location in
                       the kernel where the process is sleeping.  The corresponding symbolic name can be  found  in
                       /proc/[pid]/wchan.
             (36) nswap  %lu
                       スワップされたページ数 (メンテナンスされていない)。
             (37) cnswap  %lu
                       子プロセスの nswap の累計 (メンテナンスされていない)。
             (38) exit_signal  %d  (Linux 2.1.22 以降)
                       プロセスが死んだときに親プロセスに送られるシグナル。
             (39) processor  %d  (Linux 2.2.8 以降)
                       このプロセスを最後に実行した CPU の番号。
             (40) rt_priority  %u  (Linux 2.5.19 以降)
                       リアルタイムスケジューリングの優先度。  リアルタイムポリシーの元でスケジューリングされるプロ
                       セスでは 1 から 99 の範囲の値となり、 リアルタイム以外のスケジューリングポリシーのプロセスで
                       は 0 となる (sched_setscheduler(2)  参照)。
             (41) policy  %u  (Linux 2.5.19 以降)
                       スケジューリングポリシー  (sched_setscheduler(2)  参照)。 値は、 linux/sched.h の SCHED_* 定
                       数を使ってデコードすればよい。
                       このフィールドのフォーマットは Linux 2.6.22 より前は %lu であった。
             (42) delayacct_blkio_ticks  %llu  (Linux 2.6.18 以降)
                       (clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
             (43) guest_time  %lu  (Linux 2.6.24 以降)
                       プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。 clock tick 単位で
                       計測される (sysconf(_SC_CLK_TCK) で割った値が表示される)。
             (44) cguest_time  %ld  (Linux 2.6.24 以降)
                       プロセスの子プロセスのゲスト時間。  clock tick 単位で計測される (sysconf(_SC_CLK_TCK) で割っ
                       た値が表示される)。
             (45) start_data  %lu  (Linux 3.3 以降)
                       Address above which program initialized and uninitialized (BSS) data are placed.
             (46) end_data  %lu  (Linux 3.3 以降)
                       Address below which program initialized and uninitialized (BSS) data are placed.
             (47) start_brk  %lu  (Linux 3.3 以降)
                       Address above which program heap can be expanded with brk(2).
             (48) arg_start  %lu  (Linux 3.5 以降)
                       プログラムのコマンドライン引き数 (argv) が置かれる開始アドレス。
             (49) arg_end  %lu  (Linux 3.5 以降)
                       プログラムのコマンドライン引き数 (argv) が置かれる終了アドレス。
             (51) env_end  %lu  (Linux 3.5 以降)
                       プログラムの環境 (environment) が置かれる終了アドレス。
             (52) exit_code  %d  (Linux 3.5 以降)
                       waitpid(2) が報告する形式のスレッドの終了ステータス。

/proc/[pid]/statm

(ページ単位で計測した) メモリー使用量についての情報を提供する。 各列は以下の通りである。

                 size       プログラムサイズの総計
                            (/proc/[pid]/status の VmSize と同じ)
                 resident   実メモリー上に存在するページ
                            (/proc/[pid]/status の VmRSS と同じ)
                 share      共有ページ (ファイルと関連付けられているページ)
                 text       テキスト (コード)
                 lib        ライブラリ (Linux 2.6 では未使用)
                 data       データ + スタック
                 dt         ダーティページ (Linux 2.6 では未使用)