如何让top命令计算每秒CPU使用率?

如何让top命令计算每秒CPU使用率?

top我在 Solaris 模式下使用via top -d 1,它显示我的一个进程正在使用大约 45% 的 CPU。

问题:

  • 既然我正在使用,-d 1这是否意味着该进程每秒使用大约一半的核心?
  • 如果不是那么我如何计算每秒的CPU使用率?

答案1

您看到的应用程序的使用45%情况很可能是 CPU 一个核心的使用情况,这就是为什么列中的数字总和会%CPU超过100%

如果您想了解系统每秒的总 CPU 使用率,可以使用id输出的属性 (IDLE) top。将其除以核心数 ( nproc --all),您将获得当前的 CPU 使用率:

top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,' | awk -v cores=$(nproc --all) '{print "CPU Usage: " ($8/cores) "%"}'

获取 CPU 总使用率的一些替代方法:

虚拟机状态

echo "CPU Usage: "$[100-$(vmstat 1 2 | tail -1 | awk '{print $15}')]"%"

该命令将解析以下结果vmstat延迟一秒,然后减去可用 CPU 空间100,得到当前使用的空间量。

/进程/统计

cat /proc/stat | grep cpu | tail -1 | awk '{print "CPU Usage: " ($5*100)/($2+$3+$4+$5+$6+$7+$8+$9+$10) "%"}'

为了解析出感兴趣的信息,我们使用以下计算:

Average idle time (%) = (idle * 100) / (user + nice + system + idle + iowait + irq + softirq + steal + guest + guest_nice)

参考:

相关内容