Top
如何計算 CPU 負載?
我
top -b -n2 -d 1 | grep Cpu
在一個循環中執行,並註意到它在每次迭代中返回兩個條目……1)對於每個循環,有兩行結果…我應該使用第一行還是第二行…兩者有什麼區別?
- 要計算 CPU 使用率,我是否添加 %us、%sy、%ni、%hi 和 %si?
Cpu(s): 1.6%us, 1.7%sy, 0.0%ni, 96.6%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st Cpu(s): 8.7%us, 9.4%sy, 0.0%ni, 81.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu(s): 1.6%us, 1.7%sy, 0.0%ni, 96.6%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st Cpu(s): 9.7%us, 8.9%sy, 0.0%ni, 81.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
- @garethTheRed 是正確的,您要求輸出兩次迭代。
- 這取決於您所說的“CPU 使用率”是什麼意思。行中的每個項目代表不同的東西:
%us
是nice值為0或更高的程序在使用者模式下花費的時間。這包括大多數使用者應用程序所做的大部分工作。%sy
是在不屬於任何其他區域的核心模式下花費的時間。這主要是花在系統呼叫上的時間。%ni
是值低於 0 的程序在使用者模式下花費的時間。本質上,這是後台任務。%id
是什麼都不做的時間。它應該等於 100 減去其他值的總和。%wa
是等待 I/O 完成而沒有花在做其他事情上的時間。這包括等待讀取或寫入數據到磁碟所花費的時間。%hi
是在核心模式下服務硬體中斷所花費的時間。在大多數好的系統上,這應該接近於零。%si
是花在核心模式服務軟體和延遲中斷上的時間(在大多數係統上,這主要是網路中斷)。%st
是時候系統可以執行某些東西了,但是另一個虛擬機卻很忙。這應該為零,除非您自己執行虛擬機,或者在 EC2、GCE、DigitalOcean 或 Linode 等雲託管平台上執行。這個可能不會出現在某些系統上,尤其是舊的或非 Linux 系統上。根據大多數非程序員的定義,系統的 CPU 使用率等於 、 和 的總和
%us
(%sy
事實上%ni
,舊的 UNIX 系統只顯示這些值)。更準確的說法是它等於除%id
、%wa
和之外的所有內容的總和%st
(因為 CPU 在這些狀態下實際上什麼都不做)。使用您給出的範例行,第二個定義下的使用率將是:3.4%、18.1%、3.4% 和 18.6%。