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)
参考: