当前位置: 首页>>技术教程>>正文


如何记录CPU负载?

,

问题描述

如何将 CPU 负载记录到文件中以便调查问题?

最佳办法

这非常有效:

 while true; do uptime >> uptime.log; sleep 1; done
  • 这将每秒记录您的 cpu 负载并将其附加到文件 uptime.log 中。\n然后您可以将此文件导入到 Gnumeric 或 OpenOffice 电子表格中以创建漂亮的图表(导入时选择“用空格分隔”)。

正如斯凯恩注意到的那样,这不足以诊断问题。因此,另外,运行这个(或使用他对这部分的答案):

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
  • 这将每五秒将前 10 个最消耗 CPU 的进程附加到文件 ps.log。\n请注意,这不是 top 将为您提供的完整 boat-load 信息。这只是前 10 个,以及它们的 CPU 使用率、内存使用率和第一个参数(即它们的命令没有进一步的参数,如 /usr/bin/firefox 中)

使用电子表格创建图表来查看 CPU 负载何时达到峰值后,您可以搜索此文件以查找最近的时间,以了解是什么进程导致了这种情况。

这些文件如下所示:

正常运行时间日志

~$ 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
 ...

日志记录

%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 命令,然后将其转储到文件中。

启动电脑时,打开终端,运行

top -b > ~/cpu.txt

然后,当您的电脑死机时,只需打开(可能很大)文本文件并检查最后一个条目,了解崩溃之前正在运行的内容的一些详细信息。事实上,该文件太大了,您最好运行 tail -250 ~/cpu.txt

另外,请检查 /var/log/kern.log,以防您的问题与硬件相关(如果这仅在升级后发生,则不太可能,但仍然值得检查)。

第三种办法

我发现 a great answerChristopherthis question on Unix and Linux 使用 top

top -n 1 -b > top.out

这将为您提供 top 的 1 次迭代,然后停止,然后将其推送到文件中。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13913.html,未经允许,请勿转载。