Linux mpstat命令詳解


一、mpstat命令介紹

  mpstat是Multiprocessor Statistics的縮寫,是CPU實時監控工具。它會顯示CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPU系統里,mpstat命令不僅能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。mpstat最大的特點是:可以查看多核心cpu中每個計算核心的統計數據;而類似的工具vmstat只能查看系統整體cpu情況

二、mpstat語法

  mpstat命令的語法格式為:

mpstat [-P {|ALL}] [internal [count]]
參數 解釋
-P {|ALL} 表示監控哪個CPU,例如mpstat -P 0    mpstat -P 7   mpstat -P ALL
internal 相鄰的兩次采樣的間隔時間
count 采樣的次數,count只能和delay一起使用
當沒有參數時,mpstat只顯示系統所有信息的平均值,有internal參數時,第一行的信息是自系統啟動以來的平均信息,從第二行開始,輸出為前一個internal時間段的平均信息

三、實例

【例1】查看CPU整體的運行狀況,每秒更新1次

➜  test mpstat 1   #沒有-P {|ALL}參數時,默認顯示CPU整體運行狀況
Linux 4.14.81.bm.15-amd64 (n227-080-096)     10/04/21     _x86_64_    (8 CPU)

11:05:37     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:05:38     all    0.50    0.00    1.51    0.00    0.00    0.00    0.13    0.00    0.00   97.86
11:05:39     all    0.75    0.00    1.76    0.00    0.00    0.00    0.13    0.00    0.00   97.36
11:05:40     all    0.25    0.00    1.76    0.00    0.00    0.00    0.13    0.00    0.00   97.86
11:05:41     all    0.63    0.00    1.51    0.00    0.00    0.00    0.25    0.00    0.00   97.62
11:05:42     all    1.00    0.00    2.63    0.00    0.00    0.00    0.13    0.00    0.00   96.24

【例2】查看每個CPU核心的運行狀況,每秒更新1次

➜  test mpstat -P ALL 1     #有-P {|ALL}參數時,會顯示全部CPU核心的運行狀況
Linux 4.14.81.bm.15-amd64 (n227-080-096)     10/04/21     _x86_64_    (8 CPU)

11:07:11     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:07:12     all    0.76    0.00    2.15    0.00    0.00    0.00    0.13    0.00    0.00   96.97
11:07:12       0    0.00    0.00    4.00    0.00    0.00    0.00    1.00    0.00    0.00   95.00
11:07:12       1    0.00    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   98.99
11:07:12       2    0.00    0.00    3.03    0.00    0.00    0.00    0.00    0.00    0.00   96.97
11:07:12       3    1.01    0.00    2.02    0.00    0.00    0.00    0.00    0.00    0.00   96.97
11:07:12       4    3.03    0.00    2.02    0.00    0.00    0.00    0.00    0.00    0.00   94.95
11:07:12       5    0.00    0.00    3.06    0.00    0.00    0.00    0.00    0.00    0.00   96.94
11:07:12       6    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
11:07:12       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

11:07:12     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:07:13     all    0.38    0.00    1.13    0.00    0.00    0.00    0.38    0.00    0.00   98.11
11:07:13       0    0.99    0.00    1.98    0.00    0.00    0.00    0.99    0.00    0.00   96.04
11:07:13       1    0.00    0.00    2.04    0.00    0.00    0.00    0.00    0.00    0.00   97.96
11:07:13       2    0.00    0.00    2.02    0.00    0.00    0.00    0.00    0.00    0.00   97.98
11:07:13       3    0.00    0.00    0.00    0.00    0.00    0.00    1.01    0.00    0.00   98.99
11:07:13       4    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
11:07:13       5    0.00    0.00    1.00    0.00    0.00    0.00    1.00    0.00    0.00   98.00
11:07:13       6    0.00    0.00    1.00    0.00    0.00    0.00    1.00    0.00    0.00   98.00
11:07:13       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

【例3】每秒輸出一次CPU整體統計信息,一共輸出5次,然后結束

➜  test mpstat 1 5
Linux 4.14.81.bm.15-amd64 (n227-080-096)     10/04/21     _x86_64_    (8 CPU)

12:00:52     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
12:00:53     all    0.63    0.00    2.89    0.00    0.00    0.00    0.13    0.00    0.00   96.36
12:00:54     all    2.15    0.00    3.92    0.13    0.00    0.13    0.25    0.00    0.00   93.42
12:00:55     all    0.50    0.00    1.13    0.00    0.00    0.00    0.38    0.00    0.00   97.99
12:00:56     all    0.38    0.00    1.63    0.00    0.00    0.13    0.13    0.00    0.00   97.74
12:00:57     all    0.38    0.00    1.64    0.00    0.00    0.00    0.13    0.00    0.00   97.86
Average:     all    0.81    0.00    2.24    0.03    0.00    0.05    0.20    0.00    0.00   96.68

上述命令,每秒輸出一次信息,一共輸出5次,然后結束。最后會打印一下這5次輸出的平均值

四、mpstat各字段的含義

字段 含義
%usr 在internal時間段里,用戶態占用CPU的時間(%),不包含nice值為負的進程
%nice 在internal時間段里,nice值為負的進程占用CPU的時間(%) 
%sys 在internal時間段里,內核態占用CPU的時間(%)
%iowait 在internal時間段里,等待IO占用CPU的時間(%)
%irq 在internal時間段里,硬中斷占用CPU的時間(%)
%soft 在internal時間段里,軟中斷占用CPU的時間(%)
%guest CPU處理虛擬進程花費的時間開銷
%idle 在internal時間段里,空閑CPU的時間(%)

五、總結

  1. mpstat和vmstat命令的差別:mpstat可以顯示每個CPU的統計信息,而vmstat只顯示所有CPU的統計信息。因此,編寫糟糕的應用程序(不使用多線程體系結構)可能會運行在一個多處理器機器上,而不使用所有處理器。從而導致一個 CPU 過載,而其他 CPU 卻很空閑。通過 mpstat 可以輕松診斷這些類型的問題。

  2.vmstat中所有關於CPU的總結都適合mpstat。當您看到較低的 %idle 數字時,就知道出現了 CPU 不足的問題。當您看到較高的 %iowait 數字時,就知道在當前負載下等待IO嚴重。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM