51節(jié) 2021-03-10服務器性能分析指令mpstat

上節(jié)我們已經(jīng)講了top,vmstat資源監(jiān)控 工具,今天我們要看一樣另一個監(jiān)控工具,mpstat。
介紹vmstat,已經(jīng)安裝了sysstat工具,這款工具有mpstat不用再額外安裝工具了。

mpstat介紹

mpstat是 Multiprocessor Statistics的縮寫,是實時系統(tǒng)監(jiān)控工具,是用來監(jiān)控cpu信息,這些信息存放在/proc/stat文件中。
在多核心cpu系統(tǒng)中,不僅可以查看cpu平均信息,還可以查看指定cpu信息

mpstat的語法如下

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


image.png

mpstat命令使用

(1)當mpstat不帶參數(shù)時,輸出為從系統(tǒng)啟動以來的平均值

[root@vircent7 ~]# mpstat
Linux 3.10.0-1127.el7.x86_64 (vircent7.kyj)     2021年03月12日     _x86_64_    (2 CPU)

15時15分43秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15時15分43秒  all    0.08    0.00    0.10    0.06    0.00    0.01    0.00    0.00    0.00   99.76
[root@vircent7 ~]# 

上面15時15分43秒表示系統(tǒng)從啟動到當前這個時間(就是你服務器當前時間)的cpu整體使用狀態(tài)。

(2)mpstat -P ALL 5 2
表示每5秒產(chǎn)生一個報告,總共產(chǎn)生2個
ALL表示查看所有cpu
如下圖:15時18分07秒 和15時18分12秒是間隔5秒產(chǎn)生的一組數(shù)據(jù)
15時18分12秒 和15時18分17秒 是間隔5秒,產(chǎn)生的第二組數(shù)據(jù)。

[root@vircent7 ~]# mpstat -P ALL 5 2
Linux 3.10.0-1127.el7.x86_64 (vircent7.kyj)     2021年03月12日     _x86_64_    (2 CPU)
#(1)第一組數(shù)據(jù)
15時18分07秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15時18分12秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00   #這代表2個cpu的平均信息
15時18分12秒    0    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80#這代表第一個cpu的活躍數(shù)據(jù)
15時18分12秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00#這代表第二個cpu的獲取數(shù)據(jù)

#第二組數(shù)據(jù)
15時18分12秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15時18分17秒  all    0.00    0.00    0.10    0.00    0.00    0.00    0.00    0.00    0.00   99.90
15時18分17秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15時18分17秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

平均時間:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均時間:  all    0.00    0.00    0.05    0.00    0.00    0.00    0.00    0.00    0.00   99.95
平均時間:    0    0.00    0.00    0.10    0.00    0.00    0.00    0.00    0.00    0.00   99.90
平均時間:    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
[root@vircent7 ~]#


上面打印信息表示每5秒產(chǎn)生了2個關于處理器的統(tǒng)計數(shù)據(jù)報告,一共產(chǎn)生2個interval 的信息,然后再給出這2個interval的平均信息。默認時,輸出是按照CPU 號排序。第一個行給出了從系統(tǒng)引導以來的所有活躍數(shù)據(jù)。接下來每行對應一個處理器的活躍狀態(tài)。

(3)mpstat -P ALL|0:顯示指定CPU使用狀態(tài)

上面我們可以看到cpu有2個,序號是0和1,這里我們只看序號是0的這個cpu使用情況。

[root@vircent7 ~]# mpstat -P  0  5 2
Linux 3.10.0-1127.el7.x86_64 (vircent7.kyj)     2021年03月12日     _x86_64_    (2 CPU)

15時42分46秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15時42分51秒    0    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80
15時42分56秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均時間:       0    0.00    0.00    0.10    0.00    0.00    0.00    0.00    0.00    0.00   99.90


上面我們可以到,cpu0輸出了2組數(shù)據(jù),51秒輸出一組,56秒輸出1組,,最后一行是cpu0的平均信息。

讓我們看一看這些列值的含義:

%user 表示處理用戶進程所使用 CPU 的百分比。用戶進程是用于應用程序(如 Oracle 數(shù)據(jù)庫)的非內(nèi)核進程。
在本示例輸出中,用戶 CPU 百分比非常低。

%nice 表示使用 nice 命令對進程進行降級時 CPU 的百分比。在之前的部分中已經(jīng)對 nice 命令進行了介紹。簡單來說,nice 命令更改進程的優(yōu)先級。

%system 表示內(nèi)核進程使用的 CPU 百分比

%iowait 表示等待進行 I/O 所使用的 CPU 時間百分比

%irq 表示用于處理系統(tǒng)中斷的 CPU 百分比

%soft 表示用于軟件中斷的 CPU 百分比

%idle 顯示 CPU 的空閑時間

%intr/s 顯示每秒 CPU 接收的中斷總數(shù)

上面每列都是時間的百分比,比如:
%usr:在internal時間段里,用戶態(tài)的CPU時間占用百分比(%),不包含 nice值為負進程
計算公式:usr/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時間前的值。上表中的所有值可取到兩位小數(shù)點

vmstat和mpstat區(qū)別

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

針對 Oracle 用戶的用法
與 vmstat 相似,mpstat 命令還產(chǎn)生與 CPU 有關的統(tǒng)計信息,因此所有與 CPU 問題有關的討論也都適用于 mpstat。
當您看到較低的 %idle 數(shù)字時,您知道出現(xiàn)了 CPU 不足的問題。當您看到較高的 %iowait 數(shù)字時,
您知道在當前負載下 I/O 子系統(tǒng)出現(xiàn)了某些問題。該信息對于解決 Oracle 數(shù)據(jù)庫性能問題非常方便。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容