我正在寫一個小python腳本來測試一些東西。後來我想用它來創建與gnuplot的資源使用情節,但首先一些測試。CPU使用率(頂部輸出)如何總計超過100%?
腳本看起來像
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%....
問題可能是某些進程啓動了其他進程,並且它們都顯示在頂級輸出中,而父進程還顯示了孩子的CPU使用情況? ==>孩子被算兩次?
通常這個用法意味着100%的1核心;如果你有2個內核,它應該高達200%。如果稍微多一些,可能是由於四捨五入或取樣人爲因素造成的。 –
好的,謝謝。因此,如果我想查看「真實」使用情況,將總和除以內核數量應該是正確的。 –