一天一個 Linux 命令(41):mpstat 命令
阿新 • • 發佈:2021-11-17
本文為joshua317原創文章,轉載請註明:轉載自joshua317部落格https://www.joshua317.com/article/196
一、簡介
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 子系統出現了某些問題。
本文為joshua317原創文章,轉載請註明:轉載自joshua317部落格https://www.joshua317.com/article/196