うまいぼうぶろぐ

linuxとhttpdとperlのメモ

プロセスのCPU利用率はpsだけだと正確に見れない

そういえば前に調べてすっかり忘れていた。

man psにあるように

現在のところCPU使用率は、プロセスの生存期間中に実行に利用した時間のパーセンテージで表される。これは理想的ではなく、psが準拠すべき標準に準拠していない。CPU使用率は足し合わせても正確に100%になることは少ない

だもんでpsで表示される%cpuは cpu利用時間 / プロセス生存時間 なので、psで表示される値は単位時間あたりの平均利用率。

top,sysstat,vmstat,mpstatあたりだとOS全体だけど、瞬間的なCPU利用率はわかる。

プロセスごとの瞬間的なCPU利用率は、どうやって調べるんだろう?

追記

この人も同じようなこと書いてた。

なお、sysstat-9.x ではプロセスごとのパフォーマンス情報を取る pidstat というコマンドが利用できるようになったので、こちらを利用する手もある。

pidstatを使えばプロセスごとの瞬間的な値がわかるらしい。手元のバージョン調べたらpidstatはたぶん8系からあるっぽいけど。

というわけでsysstatのバージョンをあげよう。

$ sa_lib_dir=/usr/lib64/sa sa_dir=/var/log/sa conf_dir=/etc/sysconfig \
./configure --prefix=/usr --enable-install-cron
$ make
$ sudo make install