我正在编写一个小 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 使用情况? ==> 孩子被算了两次?
100% cpu 是 1 个 CPU/核心/线程的充分利用。如果您有 8 个 CPU,则最大值将为 800%。
如果有线程,情况会更复杂一些,因为线程不是真正的 CPU,但是在 Linux 上它被算作 CPU。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)