今読み書きしているプロセスを探す
何もやっていないのにディスクがカリカリいってる。おかしいな、何が動き出したんだろう。ということがついさっきあった。
Linuxではsysstatに含まれるpidstat
を使うのが手っとり早いようだ(pidstat
はsysstat 7.1.4以降に含まれている)。pidstat
はプロセスの状態を報告するツールでvmstat
などと似た動作をする。
ディスクIOの様子を見るには-d
オプションと、通常はインターバル、報告回数を与えて実行する。
$ pidstat -d 5 3 Linux 2.6.26-1-686-bigmem (hoge) 2009年04月03日 _i686_ (2 CPU) 09時00分50秒 PID kB_rd/s kB_wr/s kB_ccwr/s Command 09時00分55秒 1060 0.00 19.16 0.00 kjournald 09時00分55秒 3715 1.60 3.19 0.00 thunderbird-bin 09時00分55秒 PID kB_rd/s kB_wr/s kB_ccwr/s Command 09時01分00秒 1060 0.00 0.80 0.00 kjournald 09時01分00秒 1946 0.00 2.40 1.60 zsh 09時01分00秒 PID kB_rd/s kB_wr/s kB_ccwr/s Command 09時01分05秒 1060 0.00 24.00 0.00 kjournald 09時01分05秒 1946 0.00 0.80 0.80 zsh 09時01分05秒 23587 0.00 1.60 0.00 apache2 平均値: PID kB_rd/s kB_wr/s kB_ccwr/s Command 平均値: 1060 0.00 14.66 0.00 kjournald 平均値: 1946 0.00 1.07 0.80 zsh 平均値: 3715 0.53 1.07 0.00 thunderbird-bin 平均値: 23587 0.00 0.53 0.00 apache2
-p
オプションによりプロセスIDを指定すれば、そのプロセスのIO状態を追跡することもできる。なお、pidstat
のこの機能を使うにはLinux 2.6.20以降でなければならないようだ(pidstat(1)より)。