Top

如何計算 CPU 負載?

  • February 14, 2019

top -b -n2 -d 1 | grep Cpu在一個循環中執行,並註意到它在每次迭代中返回兩個條目……

1)對於每個循環,有兩行結果…我應該使用第一行還是第二行…兩者有什麼區別?

  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
  1. @garethTheRed 是正確的,您要求輸出兩次迭代。
  2. 這取決於您所說的“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%。

引用自:https://unix.stackexchange.com/questions/393874