如何记录CPU负载?
如何将CPU负载记录到文件以调查问题?
这非常有效:
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
ps.log
进程追加到文件ps.log
。请注意,这不是最重要的信息。 这只是前十名,只是他们的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 ...
您可以使用-b
选项以批处理方式运行top
命令,然后将其转储到文件中。
启动PC时,打开终端,运行
top -b > ~/cpu.txt
然后当你的PC冻结时,只需打开(可能是巨大的)文本文件,并检查最后一个条目,了解崩溃前运行的内容的一些细节。 事实上,文件将是如此愚蠢,你最好运行tail -250 ~/cpu.txt
。
还要检查你的/var/log/kern.log,以防你的问题与硬件有关(如果这只是在升级之后才会发生,但值得检查)。