vmstatのソースコードリーディング

普段何気なく使っているvmstatの仕組みについて, 調べてみた.
(ソースはprocps-3.2.8.tar.gzを利用)

1. vmstat(オプションなし)はgetstat関数を呼び出して出力する情報を得ている.
2. getstat関数は/proc/statを読み取っている
2-a: /proc/statの読み方
参考サイト

例えば,私のPC上で動作するVMでは,以下の値が取得できる.

                                                                                                  • -

cpu 3319 4415 8573 494061 24641 0 846 0 0 0
cpu0 3319 4415 8573 494061 24641 0 846 0 0 0
intr 312945 64 3284 0 0 0 0 3 0 1 0 0 0 7359 0 0 16175 17753 58559 98 54263 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 674737
btime 1333199133
processes 3033
procs_running 1
procs_blocked 0
softirq 368556 0 87531 27640 54054 62780 0 2885 0 167 133499

                                                                                                    • -
  • cpuはusr, nice, sys, idle, iowait, irq, softirq, steal, guestに費やした時間を表す. (10個目はなんだろう...

)

  • intrは各割り込みの発生回数. 最初数字は割り込み総数であり,それ以降が割り込み数に該当する.
  • ctxtコンテキストスイッチの回数
  • btimeはシステム起動からの経過時間(UNIX time)
  • processesは起動後からのfork回数
  • procs_running は実行中のプロセス数
  • procs_blocked はI/O待ちでブロックされているプロセス数
  • softirq ソフト割り込み数 (何がどれに該当するのかは別途調べる必要あり)

ものによっては,page diskioが載っているものもあるみたい。

次は, /proc/statを設定しているソース探し.