簡體   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