Linux性能監(jiān)控的工具集和分析命令工具詳解
常見磁盤IO性能指標(biāo)
磁盤讀寫常見指標(biāo)
IOPS(Input/Output Operations per Second)
- 指每秒能處理的I/O個(gè)數(shù),表示塊存儲(chǔ)處理讀寫(輸出/輸入)的能力,單位為次,有順序IOPS和隨機(jī)IOPS
- 比如100次/秒,那iops就是100次/秒,例如數(shù)據(jù)庫(kù)類應(yīng)用等典型場(chǎng)景重點(diǎn)提升這個(gè)指標(biāo),下面是阿里云盤性能
吞吐量/帶寬(Throughput)
- 是指單位時(shí)間內(nèi)可以成功傳輸?shù)臄?shù)據(jù)數(shù)量,單位為MB/s
- 如 一個(gè)硬盤的讀寫 IO 是 1MB,硬盤的 IOPS 是 100,那么硬盤總的吞吐率就是 100MB/s
帶寬 = IOPS * IO大小
訪問(wèn)時(shí)延(Latency)
- 是指IO請(qǐng)求從發(fā)出到收到響應(yīng)的間隔時(shí)間,常以毫秒ms或者微妙us為單位
- 硬盤響應(yīng)時(shí)間 = 硬盤訪問(wèn)時(shí)間 + IO排隊(duì)延遲,過(guò)高的時(shí)延會(huì)導(dǎo)致應(yīng)用性能下降或報(bào)錯(cuò)
- 普通的HDD磁盤,隨機(jī)IO讀寫延遲是10毫秒,IO帶寬大約100MB/秒,隨機(jī)IOPS一般在100左右
使用率 Utilization
- 指磁盤處理 I/O 的時(shí)間百分比,過(guò)高的使用率 ,常規(guī)字段 Utilization-縮寫%util 表示
- 如超過(guò) 80%意味著磁盤 I/O 存在性能瓶頸
- I/O 等待隊(duì)列長(zhǎng)度 Queue Length
表示等待處理的 I/O 請(qǐng)求的數(shù)目,如果 I/O 請(qǐng)求壓力持續(xù)超出磁盤處理能力,就會(huì)增大隊(duì)列長(zhǎng)度
飽和度
- 磁盤處理 I/O 的繁忙程度,過(guò)高的飽和度說(shuō)明磁盤存在嚴(yán)重的性能瓶頸
- 當(dāng)飽和度為 100% 時(shí),磁盤無(wú)法接受新的 I/O 請(qǐng)求
- 注意:使用率和飽和度是完全不同的
使用率只考慮有沒有IO,不考慮IO的大??;當(dāng)使用率是100%時(shí),磁盤也可能接收新的IO請(qǐng)求
sysstat提供了Linux性能監(jiān)控的工具集
【全局命令】 iostat
- 查看系統(tǒng)綜合的磁盤IO情況 - iostat [參數(shù)] [時(shí)間] [次數(shù)] ` iostat -p ALL -h` - 參數(shù)說(shuō)明
| 參數(shù) | 說(shuō)明 |
|---|---|
| -c | 僅顯示CPU狀態(tài)統(tǒng)計(jì)信息 |
| -d | 僅顯示磁盤統(tǒng)計(jì)信息 |
| -k 或 -m | 以Kb 或 Mb為單位顯示,常用 -h 可讀性高 |
| -p | 指定顯示IO的設(shè)備,ALL表示顯示所有 |
| -x | 顯示詳細(xì)信息 |
顯示信息,iostat不能直接得到磁盤飽和度

| 字段 | 說(shuō)明 |
|---|---|
| 【重要】r/s | 每秒發(fā)送給磁盤的讀請(qǐng)求次數(shù) , r/s+ w/s 是磁盤 IOPS |
| 【重要】w/s | 每秒發(fā)送給磁盤的寫請(qǐng)求次數(shù),r/s+ w/s 是磁盤 IOPS |
| 【重要】rkB/s | 每秒從磁盤讀取的數(shù)據(jù)量,rkB/s+wkB/s 是吞吐量 |
| 【重要】wkB/s | 每秒向磁盤寫入的數(shù)據(jù)量,rkB/s+wkB/s 是吞吐量 |
| 【重要】r_await | 讀請(qǐng)求處理完成等待時(shí)間,包括在隊(duì)列中的等待時(shí)間和設(shè)備實(shí)際處理時(shí)間 r_await+w_await ,是RT響應(yīng)時(shí)間 |
| 【重要】w_await | 寫請(qǐng)求處理完成等待時(shí)間,包括在隊(duì)列中的等待時(shí)間和設(shè)備實(shí)際處理時(shí)間 r_await+w_await ,是RT響應(yīng)時(shí)間 |
| 【重要】aqu-sz | 平均請(qǐng)求隊(duì)列長(zhǎng)度 |
| rareq-sz | 平均讀請(qǐng)求大小 |
| wareq-sz | 平均寫請(qǐng)求大小 |
| 【重要】%util | 磁盤處理I/O的時(shí)間百分比,表示的是磁盤的忙碌情況;如果>80% 就是磁盤可能處于忙碌狀態(tài) 一秒中有百分之多少的時(shí)間用于I/O操作,或者說(shuō)一秒中有多少時(shí)間I/O隊(duì)列是非空的 |
多核CPU監(jiān)控的核心工具mpstat
| 參數(shù) | 說(shuō)明 | 示例 |
|---|---|---|
| -P {cpu | ALL} | 指定要監(jiān)控的CPU核心 cpu:CPU編號(hào)(從0開始) ALL:所有CPU核心 | mpstat -P 0 監(jiān)控0號(hào)核心 mpstat -P ALL 監(jiān)控所有核心 |
| 間隔時(shí)間 | 數(shù)據(jù)采集間隔(秒) | mpstat 2 每2秒刷新一次 |
| 次數(shù) | 采集次數(shù),不指定則持續(xù)運(yùn)行 | mpstat 2 5 每2秒采集,共5次 |
| -u | 顯示CPU利用率(默認(rèn)參數(shù),通常省略) | mpstat -u 1 |

| 字段 | 說(shuō)明 |
|---|---|
| CPU | CPU核心編號(hào)(all表示所有核心平均值) |
| %usr | 用戶態(tài)CPU時(shí)間(運(yùn)行應(yīng)用程序代碼) |
| %nice | 低優(yōu)先級(jí)(nice值>0)用戶進(jìn)程CPU時(shí)間 |
| %sys | 內(nèi)核態(tài)CPU時(shí)間(系統(tǒng)調(diào)用、內(nèi)核線程) |
| %iowait | CPU等待I/O完成的時(shí)間(重要!>5%需關(guān)注) |
| %irq | 硬件中斷處理時(shí)間 |
| %soft | 軟中斷處理時(shí)間(網(wǎng)絡(luò)包處理、調(diào)度等) |
| %steal | 虛擬化環(huán)境中被宿主機(jī)搶占的時(shí)間(>10%表示虛擬機(jī)競(jìng)爭(zhēng)激烈) |
| %guest | 運(yùn)行虛擬CPU的時(shí)間(虛擬機(jī)客戶機(jī)) |
| %gnice | 低優(yōu)先級(jí)虛擬CPU時(shí)間 |
| %idle | CPU空閑時(shí)間(等待任務(wù)) |
進(jìn)程級(jí)資源監(jiān)控pidstat
- 語(yǔ)法與參數(shù)
pidstat [選項(xiàng)] [間隔時(shí)間] [次數(shù)]
| 類別 | 參數(shù) | 說(shuō)明 | 關(guān)鍵指標(biāo) |
|---|---|---|---|
| CPU監(jiān)控 | -u | 進(jìn)程CPU使用率(默認(rèn)選項(xiàng)) | %usr, %system, %CPU |
| 內(nèi)存監(jiān)控 | -r | 頁(yè)錯(cuò)誤與內(nèi)存使用 | minflt/s, majflt/s, VSZ, RSS, %MEM |
| I/O監(jiān)控 | -d | 磁盤I/O統(tǒng)計(jì) | kB_rd/s, kB_wr/s, kB_ccwr/s |
| 上下文切換 | -w | 進(jìn)程上下文切換 | cswch/s, nvcswch/s |
| 進(jìn)程篩選 | -p <PID> | 監(jiān)控指定進(jìn)程 | 可指定多個(gè)PID,逗號(hào)分隔 |
| -p ALL | 監(jiān)控所有進(jìn)程 | ||
| 線程監(jiān)控 | -t | 顯示線程詳細(xì)信息 | TGID(線程組ID), TID(線程ID) |
| 命令顯示 | -l | 顯示完整命令行 | 便于識(shí)別進(jìn)程 |
| 輸出格式 | -h | 水平輸出(無(wú)換行) | 便于腳本處理 |
| 間隔控制 | 間隔 | 采樣間隔(秒) | 如 1 表示1秒 |
| 次數(shù) | 采樣次數(shù) | 如 5 表示采樣5次后退出 |
監(jiān)控所有進(jìn)程的CPU使用率,每2秒刷新

| 字段 | 說(shuō)明 |
|---|---|
| %usr | 進(jìn)程在用戶態(tài)的CPU使用率(運(yùn)行應(yīng)用程序代碼) |
| %system | 進(jìn)程在內(nèi)核態(tài)的CPU使用率(執(zhí)行系統(tǒng)調(diào)用) |
| %guest | 進(jìn)程在虛擬機(jī)中運(yùn)行的CPU使用率 |
| %wait | 進(jìn)程等待運(yùn)行的時(shí)間百分比(Linux 2.6.26+) |
| %CPU | 進(jìn)程總的CPU使用率 = %usr + %system + %guest |
| CPU | 進(jìn)程最后運(yùn)行的CPU核心編號(hào) |
磁盤IO常見指標(biāo)和分析命令工具介紹
局部命令iotop
- 查看當(dāng)前系統(tǒng)的各個(gè)進(jìn)程 使用磁盤IO的情況
- 安裝
yum install -y iotop iotop -o -d 3每3秒刷新下各個(gè)進(jìn)程磁盤IO情況
參數(shù)
| 參數(shù) | 說(shuō)明 |
|---|---|
| -o | 只顯示正在讀寫磁盤的程序 |
| -d | 跟一個(gè)數(shù)值,表示iotop命令刷新的時(shí)間 |

| 字段 | 說(shuō)明 |
|---|---|
| Total DISK READ | 從磁盤中讀取的總速率 |
| Total DISK WRITE | 往磁盤里寫入的總速率 |
| Actual DISK READ | 從磁盤中讀取的實(shí)際速率 |
| Actual DISK WRITE | 往磁盤里寫入的實(shí)際速率 |
| TID | 線程ID,按 p 可以轉(zhuǎn)換成進(jìn)程ID |
| PRIO | 優(yōu)先級(jí) |
| USER | 線程所有者 |
| DISK READ | 進(jìn)程從磁盤中讀取的速率 |
| DISK WRITE | 進(jìn)程往磁盤里寫入的速率 |
| SWAPIN | 進(jìn)程swap交換百分比 |
| IO> | IO等待所占用的百分比 |
| COMMAND | 具體的進(jìn)程命令 |
總結(jié)
- 【全局】iostat是系統(tǒng)級(jí)別的IO監(jiān)控
- 【局部】iotop是進(jìn)程級(jí)別IO監(jiān)控
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
centos7(redhat7)如何卸載自帶yum并且安裝國(guó)內(nèi)yum源的方法
本篇文章主要介紹了centos7(redhat7)如何卸載自帶yum并且安裝國(guó)內(nèi)yum源的方法,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
80端口被system占用導(dǎo)致Apache無(wú)法啟動(dòng)的解決方法
本文給大家介紹80端口被system占用導(dǎo)致Apache無(wú)法啟動(dòng)的解決方法,非常不錯(cuò),一起看看吧2016-12-12
apache 二級(jí)域名解析 (window與linux)
apache 二級(jí)域名解析 window與linux下使用的方法。2009-11-11
CentOS環(huán)境下安裝Redis3.0及phpredis擴(kuò)展測(cè)試示例
這篇文章主要介紹了CentOS環(huán)境下安裝Redis3.0及phpredis擴(kuò)展測(cè)試,結(jié)合實(shí)例形式分析了CentOS下Redis安裝相關(guān)步驟、命令及phpredis擴(kuò)展的測(cè)試代碼,需要的朋友可以參考下2018-04-04
CentOS7.4開機(jī)出現(xiàn)welcome to emergency mode的解決方法
CentOS7.4開機(jī)出現(xiàn)welcome to emergency mode,報(bào)這個(gè)錯(cuò)誤多數(shù)情況下是因?yàn)?etc/fstab文件的錯(cuò)誤。注意一下是不是加載了外部硬盤、存儲(chǔ)器或者是網(wǎng)絡(luò)共享空間,在重啟時(shí)沒有加載上導(dǎo)致的2018-09-09
jmeter 在linux服務(wù)器的安裝和運(yùn)行教程圖解
本文通過(guò)圖文并茂的形式給大家介紹了jmeter 在linux服務(wù)器的安裝和運(yùn)行的,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07

