web-dev-qa-db-ja.com

CPU負荷を記録する方法は?

問題を調査するためにCPU負荷をファイルに記録する方法は?

27
tommyk

これは非常にうまく機能します:

 while true; do uptime >> uptime.log; sleep 1; done
  • これにより、CPUの負荷が毎秒記録され、ファイルuptime.logに追加されます。

    次に、このファイルをGnumericまたはOpenOfficeスプレッドシートにインポートして、素敵なグラフを作成できます(インポート時に「スペースで区切る」を選択します)。

Scaineが気づいたように、これは問題を診断するには十分ではありません。したがって、さらに、これを実行します(またはこの部分に彼の答えを使用します)。

while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
  • これにより、CPUを最も多く消費する上位10のプロセスが5秒ごとにps.logファイルに追加されます。

    これは、topが提供する完全なボート情報ではないことに注意してください。これは、トップ10であり、CPU使用率、メモリ使用率、および最初の引数(つまり、/usr/bin/firefoxのように引数のないコマンド)

スプレッドシートを使用してグラフを作成し、CPU負荷が屋根を通過したタイミングを確認したら、このファイルを最も近い時間で検索して、どのプロセスが原因であるかを確認できます。

これらのファイルは次のようになります。

uptime.log

~$ cat uptime.log 
 22:57:42 up 1 day,  4:38,  4 users,  load average: 1.00, 1.26, 1.21
 22:57:43 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:44 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:45 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 ...

ps.log

%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.1  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.0  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
 ...
39
Stefano Palazzo

-bオプションを使用してtopコマンドをバッチモードで実行し、それをファイルにダンプできます。

PCの起動時に、ターミナルを開いて実行します

top -b > ~/cpu.txt

その後、PCがフリーズしたら、(おそらく巨大な)テキストファイルを開き、クラッシュ直前に実行されていた内容の詳細について最後のエントリを確認します。実際、ファイルは非常に大きいため、代わりにtail -250 ~/cpu.txtを実行した方が良いでしょう。

また、問題がハードウェアに関連する場合は、/ var/log/kern.logを確認してください(これはアップグレード後にのみ発生する可能性がありますが、それでも確認する価値があります)。

10
Scaine