檢視CPU效能及工作狀態---mpstst
阿新 • • 發佈:2019-01-09
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 |
%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 子系統出現了某些問題。