如何将CPU使用率(top的输出)总和超过100%?

Sim*_*n H 1 python linux cpu ubuntu

我正在编写一个小的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, "%"
Run Code Online (Sandbox Code Playgroud)

多次运行几乎总是导致CPU使用率> 100%.有时甚至> 200%.怎么会这样?

它运行在具有两个核心的虚拟机(virtualbox,ubuntu 14.04 64位)中.主机也有两个核心.

所有正在运行的进程的使用值总和不应该总是低于100%吗?我在同一时间运行htop,这显示了每个核心大约50%的负载....

可能问题是,某些进程可能启动了其他进程,并且两者都显示在top的输出中,而父进程也显示了子进程的cpu使用情况?==>孩子被计算两次?

Bre*_*tão 8

100%cpu是1 CPU/CORE/Thread的完全利用率.如果你有8个CPU,那么最大值将为800%.

如果你有线程,故事有点复杂,因为一个线程不是真正的CPU,但是在Linux上它被算作CPU.

  • 将每个CPU显示为100%在`top`中称为"[IRIX模式]"(http://stackoverflow.com/questions/14579124/why-does-whiletrue-without-thread-sleep-cause-100-cpu-usage -on-linux的,但是)".可以禁用它将8个CPU中的每一个显示为12.5% (3认同)