我正在写一个小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 / CORE /线程。如果您有8个CPU,则最大值为800%。
如果您有线程,那么情况就更复杂了,因为线程不是真正的CPU,但是在Linux上,它被视为CPU。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句