首頁 > 軟體

Linux CPU監控指標

2020-06-16 18:06:36

Linux提供了非常豐富的命令可以進行CPU相關資料進行監控,例如:top、vmstat等命令。top是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態。如果在前台執行該命令,它將獨占前台,直到使用者終止該程式為止,比較準確的說,top命令提供了實時的對系統處理器的狀態監視,它將顯示系統中 CPU 最“敏感”的任務列表。該命令可以按 CPU 使用,記憶體使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人客製化檔案中進行設定。 

    top命令提供如下引數:
    top [-] [d delay] [p pid] [q] [c] [C] [S] [s] [i] [n iter] [b]
選項名 稱         說明
d  delay   指定每兩次螢幕資訊重新整理之間的時間間隔(delay 即為具體的間隔時間數值,它的單位是秒),可以使用 s互動命令來改變之。 
p pid 通過指定監控進程 ID(pid)來僅僅監控某個進程的狀態。
q 該選項將使 top 沒有任何延遲的進行重新整理。如果呼叫程式有超級使用者許可權,那麼 top 將以盡可能高的優先順序執行。 
c 顯示整個命令列而不只是顯示命令名。 
C 顯示 CPU 總體資訊而取代分別顯示每個 CPU 的資訊,此引數僅對SMP 系統有效。 
S 指定累計模式。
s 使 top 命令在安全模式中執行。這將去除互動命令所帶來的潛在危險。
i 使 top 不顯示任何閒置或者僵死進程。 
n  iter 指定 top命令疊代輸出的次數,iter為具體的疊代次數值。
b "Batch"方式執行top,在這種方式下,所有來自終端的輸入都將被忽略(當然除了ctrl+c),該引數可以結合引數“n"執行指定迭代次數退出或者該進程被殺死。這是執行top輸出到啞終端或輸到非終端的預設執行方式
 
範例一                                                                                                                                                                                                     
在控制台輸入“top”,回車如下:
top命令輸出資訊包含兩部分內容:
第一部分為統計資訊,包含五行資料資訊;第二部分為詳細資訊,顯示了各個進程的詳細資訊。
 
有必要了解下統計資訊部分的輸出資訊內容的含義
輸出資訊 說明
19:47:24 當前時間
up 15 min 系統執行時間
2 users 當前登入使用者數,這裡是jzhou和root
load average:0.02 , 0.14 , 0.21 系統負載,即任務佇列的平均長度。三個數值分別為1分鐘、5分鐘、15分鐘前到現在的平均值,即0.02,0.14,0.21
Tasks:122 total, 1 running,120 sleeping,0 stopped,1 zombie 122個進程(任務),其中有2個處於執行狀態,120個處於睡眠狀態,沒有停止的進程,有1個殭屍進程
Cpus:0.7%us,0.7%sy,0.0%ni,97.6%id,0.0%wa,0.7%hi,0.3%si,0.0%st Cpu執行狀態,使用者進程(user)佔用CPU的0.7%,系統進程(system)佔用CPU的0.7%,使用者進程沒有改變過優先順序的進程,所以user nice值為0.0%,97.6%的CPU處於空閒狀態(idle),沒有等待的輸入輸出,所以iowait的值也為0.0%,硬體請求終端時間(hardware interrupt)占CPU的0.7%,軟終端請求時間占CPU的0.3%,st代表steal time,具體作用不是很清楚,網上說是為其它CPU預留的,不清楚
Mem:1035244k total,537528k used,497716k free,25816k buffers 記憶體總量為1035244k,已使用的記憶體總量為537528k,497716k為空閒記憶體總量,25816k用作核心快取的記憶體總量。(這是虛擬機器的情況,物理機好像還有其它引數)
Swap:0k total,0k used,0k free,351392k cached 交換分割區總量為0k,使用的交換分割區總量為0k,空閒交換分割區總量為0k,351392k為緩衝的交換區總量(cached)、記憶體中的內容被患處到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於記憶體中的交換區的大小。相應的記憶體再次被換出時可不必再對交換區寫入。
然後看看詳細資訊部分輸出的資訊的內容:
輸出資訊 說明
PID 進程識別符號
USER 進程所有者使用者名稱
PR/PRI 進程執行的優先順序
NI NICE值,負值表示高優先順序,正值表示低優先順序
VIRT 進程使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES 進程使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR 共用記憶體大小,單位kb
S/STAT 進程狀態
D:不可中斷的睡眠狀態
R:正在執行,或在佇列中的進程
S:處於休眠狀態
T:停止或被追蹤
Z:殭屍進程
W:進入記憶體交換
X:死掉的進程

%CPU 上次更新到現在的CPU時間佔用百分比
%MEN 進程使用的實體記憶體百分比
TIME+ 進程使用的CPU時間總計,單位1/100s
COMMAND 進程被執行的命令名稱
 
範例二                                                                                                                                                                                                                
vmstat 命令,可以使您能夠在同一行看到系統的記憶體、CPU 等使用情況,通常您可以用該命令來檢視CPU 的利用率和飽和度。 
先連線兩個概念:
CPU利用率:CPU利用率可以使用 vmstat通過從 100減去 id 或者 us與 sy之和來計算CPU 利用率
CPU飽和度:CPU 飽和度可以通過 vmstat 命令的“procs:r”來作為衡量標準,由於它是所有 cpu 執行佇列的合計值,因此將 procs:r 除以 CPU 數目所得到的值可與其他伺服器相比較。
任何持續不變的非零值都會引起效能的下降,但效能的下降是逐漸的。
 
vmstat命令引數如下:
vmstat [-n] [delay [count]] 
也有必要了解下vmstat命令引數的含義
引數名稱 說明
n 通過這個開關引數,如果啟用它則僅顯示一次表頭資訊
delay 指定每兩次螢幕資訊重新整理之間的時間間隔,單位:s
count 在結合delay引數使用時,如果給指定數值,則執行指定的次數後退出,否則將無限次執行
在控制台輸入“vmstat –n 1”,回車執行後,該命令即為僅顯示一次檔頭資訊,每隔 1 秒鐘顯示一次 vmstat監控資訊
然後了解下輸出資訊內容各部分代表的含義
   
 
範例三                                                                                                                                                                                                                                
    還可以通過“uptime”命令來獲得 CPU 平均負載的情況。平均負載的計算通常描述為可執行和執行執行緒的平均數目。舉例來說,如果一枚單CPU 伺服器上有1 個執行執行緒佔用了 CPU,有3 個執行進程在排程程式佇列中,那麼平均負載即為 1+3=4。對於一枚 16CPU 的伺服器,負載是16 個執行執行緒,有 24 個執行進程在排程程式佇列中,那麼平均負載是 40。如果平均負載始終高於CPU 的數目,則可能導致應用程式效能的下降。需要說明的是平均負載只適用於CPU 負載的初始估算,深入的分析我們還需要借助於其他工具來做。再對 CPU平均負載有一個初步了解以後,讓我們來看看該命令是如何使用的,它的輸出內容又包含那些內容。
因為“uptime”命令僅提供了一個可選引數項“V”,即:顯示該命令的版本資訊,所以不用敘述了。
 
在控制台輸入“uptime”,回車執行後,執行結果:
可以看到“load average:0.53,0.65,0.34”即為 CPU 平均負載對應系統在第 1分鐘,5 分鐘和 15 分鐘的平均負載值。同時它們也代表 CPU 利用率和飽和度。如果 CPU 數目和平均負載的值相等,通常代表 100%的 CPU利用率,小於 CPU數目,則表示利用率小於 100%,大於 CPU數目需要用飽和度來衡量。


IT145.com E-mail:sddin#qq.com