【发布时间】:2015-04-06 18:25:52
【问题描述】:
我正在编写一个小 Python 脚本来测试一些东西。后来我想用它来用gnuplot创建资源使用图,但首先要进行一些测试。
脚本看起来像
import subprocess
result = subprocess.check_output("top -b -n 1 -c", shell=True).split("\n")
head = result[:5]
body = [x for x in result[7:] if x] #removes empty strings
for line in head:
print line
csum = 0.0
for line in body:
print line
csum += float(line.split()[8])
print "CPU usage of all processes added up", csum, "%"
多次运行它几乎总是导致显示的 CPU 使用率 > 100%。有时甚至 > 200%。这怎么可能?
它在具有两个内核的虚拟机(virtualbox,ubuntu 14.04 64 位)中运行。主机也有两个核心。
所有正在运行的进程的使用值之和不应该总是低于100%吗?我正在同时运行 htop,这显示每个内核上大约有 50% 的负载....
问题可能是某些进程启动了其他进程并且两者都显示在 top 的输出中,而父进程还显示了子进程的 cpu 使用情况? ==> 孩子被计算两次?
【问题讨论】:
-
通常这种用法意味着 1 个核心 100%;如果你有 2 个核心,它应该会上升到 200%。如果您有更多,可能是由于四舍五入或采样伪影所致。
-
好的,谢谢。因此,如果我想查看“真实”使用情况,将总和除以核心数应该是正确的