mpstat是 Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPU系統裏,其不但能查看全部CPU的平均情況信息,並且可以查看特定CPU的信息。多線程
mpstat的語法以下
mpstat [-P {cpu|ALL}] [internal [count]]
1
其中,各參數含義以下:工具
參數 含義
-P {cpu l ALL} 表示監控哪一個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次採樣的間隔時間
count 採樣的次數,count只能和delay一塊兒使用
使用mpstat命令
1.直接使用mpstat命令:spa
mpstat線程
當mpstat不帶參數時,輸出爲從系統啓動以來的平均值。blog
2.使用mpstat -P 10 5 2命令 (監控第10號CPU)排序
mpstat -P 10 5 2
表示每5秒產生一個報告,總共產生2個。進程
上圖表示每5秒產生了2個關於處理器的統計數據報告,一共產生2個interval 的信息,而後再給出這2個interval的平均信息。默認時,輸出是按照CPU 號排序。第一個行給出了從系統引導以來的全部活躍數據。接下來每行對應一個處理器的活躍狀態。ip
輸出參數含義
當沒有參數時,mpstat則顯示系統啓動之後全部信息的平均值。有interval時,第一行的信息自系統啓動以來的平均信息。從第二行開始,輸出爲前一個interval時間段的平均信息。虛擬機
輸出各參數含義:it
參數 釋義 從/proc/stat得到數據
CPU 處理器ID
%usr 在internal時間段裏,用戶態的CPU時間(%),不包含 nice值爲負進程 usr/total*100
%nice 在internal時間段裏,nice值爲負進程的CPU時間(%) nice/total*100
%sys 在internal時間段裏,核心時間(%) system/total*100
%iowait 在internal時間段裏,硬盤IO等待時間(%) iowait/total*100
%irq 在internal時間段裏,硬中斷時間(%) irq/total*100
%soft 在internal時間段裏,軟中斷時間(%) softirq/total*100
%steal 顯示虛擬機管理器在服務另外一個虛擬處理器時虛擬CPU處在非自願等待下花費時間的百分比 steal/total*100
%guest 顯示運行虛擬處理器時CPU花費時間的百分比 guest/total*100
%gnice gnice/total*100
%idle 在internal時間段裏,CPU除去等待磁盤IO操做外的由於任何緣由而空閒的時間閒置時間(%) idle/total*100
CPU總的工做時間:
total_cur = user + system + nice + idle + iowait + irq + softirq
total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
user = user_cur – user_pre
total = total_cur - total_pre
其中_cur 表示當前值,_pre表示interval時間前的值。上表中的全部值可取到兩位小數點。
Note:
1.vmstat和mpstat 命令的差異:mpstat 能夠顯示每一個處理器的統計,而 vmstat 顯示全部處理器的統計。所以,編寫糟糕的應用程序(不使用多線程體系結構)可能會運行在一個多處理器機器上,而不使用全部處理器。從而致使一個 CPU 過載,而其餘 CPU 卻很空閒。經過 mpstat 能夠輕鬆診斷這些類型的問題。
2.vmstat中全部關於CPU的總結都適合mpstat。當您看到較低的 %idle 數字時,您知道出現了 CPU 不足的問題。當您看到較高的 %iowait 數字時,您知道在當前負載下 I/O 子系統出現了某些問題。