繁体   English   中英

总的CPU使用率(最高输出)如何超过100%?

[英]How can the CPU usage (output of top) be more than 100% in sum?

我正在写一个小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。

以我的经验,我有一个导致问题的超大型SQL数据库。 这是因为它导致mysqld(mysql守护程序)以超过系统内存的容量执行,从而导致服务器崩溃。 当我在UNIX中尝试“ top”命令时,系统显示该进程正在使用100%以上的内存。 因此,进程可以使用超过100%的系统内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM