1. 程式人生 > >檢視CPU效能及工作狀態---mpstst

檢視CPU效能及工作狀態---mpstst

mpstat是 Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat檔案中。在多CPU系統裡,其不但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。

mpstat的語法如下

mpstat [-P {cpu|ALL}] [internal [count]]

其中,各引數含義如下:

引數含義
-P {cpu l ALL}表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal相鄰的兩次取樣的間隔時間
count取樣的次數,count只能和delay一起使用

使用mpstat命令

1.直接使用mpstat命令:

 #mpstat
Linux 3.2.89 (201-A) 	03/16/2018 	_x86_64_	(6 CPU)

11:27:13 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11:27:13 AM  all    7.41    0.00   10.92    4.98    0.00    0.40    0.00    0.00   76.29

當mpstat不帶引數時,輸出為從系統啟動以來的平均值。

2.使用mpstat -P ALL 5 2命令

# mpstat -P ALL 5 2
Linux 3.2.89 (201-A) 	03/16/2018 	_x86_64_	(6 CPU)

11:28:03 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11:28:08 AM  all    0.71    0.00    1.21    0.00    0.00    0.00    0.00    0.00   98.08
11:28:08 AM    0    1.01    0.00    1.41    0.00    0.00    0.00    0.00    0.00   97.58
11:28:08 AM    1    2.11    0.00    4.22    0.00    0.00    0.00    0.00    0.00   93.67
11:28:08 AM    2    1.21    0.00    1.61    0.00    0.00    0.00    0.00    0.00   97.18
11:28:08 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11:28:08 AM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11:28:08 AM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

11:28:08 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11:28:13 AM  all    0.71    0.00    1.28    0.00    0.00    0.00    0.00    0.00   98.01
11:28:13 AM    0    1.80    0.00    2.00    0.00    0.00    0.00    0.00    0.00   96.19
11:28:13 AM    1    1.68    0.00    4.21    0.00    0.00    0.00    0.00    0.00   94.11
11:28:13 AM    2    0.81    0.00    1.81    0.00    0.00    0.00    0.00    0.00   97.38
11:28:13 AM    3    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00   99.80
11:28:13 AM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11:28:13 AM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

上圖表示每5秒產生了2個關於處理器的統計資料報告,一共產生2個interval 的資訊,然後再給出這2個interval的平均資訊。預設時,輸出是按照CPU 號排序。第一個行給出了從系統引導以來的所有活躍資料。接下來每行對應一個處理器的活躍狀態。

輸出引數含義

當沒有引數時,mpstat則顯示系統啟動以後所有資訊的平均值。有interval時,第一行的資訊自系統啟動以來的平均資訊。從第二行開始,輸出為前一個interval時間段的平均資訊。

輸出各引數含義:

引數CPU從/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
%gnicegnice/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 子系統出現了某些問題。