1. 程式人生 > 其它 >一天一個 Linux 命令(41):mpstat 命令

一天一個 Linux 命令(41):mpstat 命令

一、簡介

Linux下的mpstat(英文全稱:Multiprocessor Statistics)命令是是實時系統監控工具,可以顯示隨著時間變化的CPU資料,方便找出CPU使用率與時間的關係。這個命令包含在工具集sysstat中,使用之前需要安裝sysstat。

這些資訊存放在/proc/stat檔案中。在多CPUs系統裡,其不但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。mpstat最大的特點是:可以檢視多核心cpu中每個計算核心的統計資料;而類似工具vmstat只能檢視系統整體cpu情況。

如果系統沒有安裝,可以通過sudo yum install sysstat來安裝。

二、格式說明

mpstat [ options ] [ <interval> [ <count> ] ]
mpstat [引數]

Usage: mpstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
[ -P { <cpu> [,...] | ON | ALL } ]

三、選項說明

-A  等同於-u -I ALL -P ALL
-I  可以指定SUM CPU SCPU ALL四個引數,SUM表示每個處理器的中斷總數,CPU表示每個核的每秒中斷數量, SCPU表示每個核每秒的軟中斷數量,核心版本在2.6.31之後才支援。
-P  統計的CPU編號,一般用ALL
-u  輸出列的資訊
-V  檢視工具版本號

delay  取樣間隔
count  取樣次數

四、命令功能

顯示隨著時間變化的CPU資料,方便找出CPU使用率與時間的關係

五、常見用法

5.1 執行監控第一個CPU

# mpstat -P 1

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:00:24 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:00:24 PM    1    0.29    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.41

CPU	    處理器ID
%user   在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

5.2 執行監控全部CPU

# mpstat -P ALL

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:00:49 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:00:49 PM  all    0.28    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.40
03:00:49 PM    0    0.29    0.00    0.28    0.08    0.00    0.00    0.00    0.00    0.00   99.35
03:00:49 PM    1    0.29    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.41
03:00:49 PM    2    0.29    0.00    0.28    0.01    0.00    0.00    0.00    0.00    0.00   99.42
03:00:49 PM    3    0.27    0.00    0.27    0.01    0.00    0.00    0.00    0.00    0.00   99.44

5.3 每隔1個時間單位統計5次

# mpstat 1 5

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:01:26 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:01:27 PM  all    0.25    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.25
03:01:28 PM  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
03:01:29 PM  all    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.00
03:01:30 PM  all    0.25    0.00    0.50    0.50    0.00    0.00    0.00    0.00    0.00   98.75
03:01:31 PM  all    0.25    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.50
Average:     all    0.25    0.00    0.40    0.10    0.00    0.00    0.00    0.00    0.00   99.25

5.4 檢視軟中斷統計資訊

#每間隔1秒統計一次,總共統計2次
# mpstat -I SCPU 1 2

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:14:43 PM  CPU       HI/s    TIMER/s   NET_TX/s   NET_RX/s    BLOCK/s BLOCK_IOPOLL/s  TASKLET/s    SCHED/s  HRTIMER/s      RCU/s
03:14:44 PM    0       0.00      71.00       0.00      20.00       1.00       0.00       0.00      30.00       0.00      41.00
03:14:44 PM    1       0.00      64.00       0.00      12.00       0.00       0.00       0.00      13.00       0.00      42.00
03:14:44 PM    2       0.00      71.00       0.00       2.00       0.00       0.00       0.00      16.00       0.00      53.00
03:14:44 PM    3       0.00     115.00       0.00       0.00       0.00       0.00       0.00      25.00       0.00      66.00
03:14:45 PM    0       0.00      55.00       0.00       6.00       5.00       0.00       0.00      26.00       0.00      35.00
03:14:45 PM    1       0.00      14.00       0.00       2.00       0.00       0.00       0.00       3.00       0.00       9.00
03:14:45 PM    2       0.00      36.00       0.00       2.00       0.00       0.00       0.00      10.00       0.00      21.00
03:14:45 PM    3       0.00      81.00       0.00       0.00       0.00       0.00       0.00      18.00       0.00      45.00
Average:       0       0.00      63.00       0.00      13.00       3.00       0.00       0.00      28.00       0.00      38.00
Average:       1       0.00      39.00       0.00       7.00       0.00       0.00       0.00       8.00       0.00      25.50
Average:       2       0.00      53.50       0.00       2.00       0.00       0.00       0.00      13.00       0.00      37.00
Average:       3       0.00      98.00       0.00       0.00       0.00       0.00       0.00      21.50       0.00      55.50

六、拓展-vmstat和mpstat差別

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

2.vmstat中所有關於CPU的總結都適合mpstat。當 %idle 數字較低時,一般說明出現了 CPU 不足的問題。當 %iowait 數字較高時,一般當前負載下 I/O 子系統出現了某些問題。