top/ps/mpstat が異なる出力を表示

top/ps/mpstat が異なる出力を表示

私のtopショーが19/20の負荷を示し、私のpsショーが

root@server:/home/nohup# ps -eo pcpu,pid,user,args | sort -k 1 -r | head -5
%CPU   PID USER     COMMAND
122131 18695 mysql  /usr/sbin/mysqld  xxxxx
0.1   961 root     [kdmflush]
0.1   937 root     [kdmflush]
0.1  1025 root     [jbd2/dm-2-8]

しかし、mpstatショー

root@server:/home/nohup# mpstat
Linux 2.6.32-5-amd64 (sms-db3)  06/13/2014  _x86_64_    (16 CPU)

09:35:42 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
09:35:42 PM  all    2.38    0.00    0.15    0.15    0.00    0.02    0.00    0.00   97.29

straceプロセッサ負荷を取得するためmpstatに読み取りを行っていることを示します。/proc/stat

どちらを信じるべきでしょうか?この違いの原因は何でしょうか、それとも使い方が間違っているのでしょうか?私はDebian Squeeze 2.6.32-5-amd64を使用しています

答え1

procps 3.2.8非常に古いバージョンのライブラリであるDebian Squeeze が実行中です。mpstatに似た数値が表示されるtopので、基本的には過去数秒間の数値です。 はpsプロセスが開始されたときの統計情報を表示します。

ただし、数字は異常であり、オーバーフローまたはラップが発生していることを示しています。現時点で何が起こっているかを把握したい場合は、の方mpstatが正確であると思われます。topもこれらの数字に近いはずですが、そうでない場合は、概要領域に何が表示されていたかを確認したいと思います。

PS. プロセスがその存続期間中にどの程度「ビジー」であったかを確認する方がよいでしょう。

関連情報