检查哪个进程使平均负载达到顶峰

检查哪个进程使平均负载达到顶峰

在试图找到夜间系统上平均负载较高的罪魁祸首(这似乎与 logrotate 无关)时,我安装了一个以特定间隔写入原始文件的软件。在读取文件时,进程列表似乎静止不动,我可以以某种方式在样本之间来回查看突出的内容,并按任何列(例如 CPU 使用情况)进一步排序吗?

答案1

关于你的第二个问题,默认情况下打印的列表atop是按cpu使用率排序的。如果您想按其他参数(例如驻留内存消耗)对其进行排序,您可以这样做(man atop告诉您交互和原始文件模式如何进行)。

关于您的第一个问题,这个小 AWK 脚本可能会有所帮助:

BEGIN {
  printline = "false"
}
{
   if (printline == "true") { print($0); printline = "false" }
   if ($1 == "PID") { printline = "true" }
}

运行它awk -f myScript.awk logFromAtop.log,它会给你每个间隔的顶行 atop ;可能很容易看到几行突出的线条。 (该脚本只是查找以 PID 开头的行并打印接下来的行。)

根据您的 atop 版本,它可能会根据运行时的标志为您提供 ASCII 或二进制原始文件。在后一种情况下,您可以获得带有atop自身的 ASCII 版本,例如atop -r binary.raw > logFromAtop.log.

答案2

通过查看 CPU 使用率百分比,您永远不会发现哪个进程导致高平均负载。平均负载取决于进程何时运行 (R) 或等待 I/O (D)。所以您应该使用的实际选项是s

s 显示调度特性。

在窗口宽度为 80 个位置的情况下,每个进程显示以下字段:process-id、处于“运行”状态的线程数量 (R)、处于“可中断睡眠”状态的线程数量 (S)、处于“不可中断睡眠”状态的线程数量 (D)、调度策略(正常分时、实时循环、实时fifo)、nice值、优先级、实时优先级、当前处理器、状态、退出代码、状态、所选资源的占用百分比和进程名称。

当可用职位超过 80 个时,会添加其他信息。

只需更改您的配置以显示调度特征,您就会找到罪魁祸首。

答案3

atop使用参数运行-r,后跟日志文件:

然后,在atop运行时,您可以使用ctrl+F查看下一页,或使用ctrl+B查看上一页。

相关内容