文章目錄
- 1. 功能介紹
- 2. 語法介紹
- 3. 應用場景
- 4. 示例分析
1. 功能介紹
iostat (input/output statistics),是 Linux/Unix 系統中用于監控 CPU 使用率和 磁盤 I/O 性能的核心工具,可實時展示設備負載、吞吐量、隊列狀態等關鍵指標。
可以使用 man iostat
查看詳細介紹。
-
核心監控維度
- CPU 使用率:用戶態(%user)、內核態(%system)、空閑(%idle)及 I/O 等待時間(%iowait)。
- 磁盤 I/O:每秒讀寫請求數(tps)、數據量(kB_read/s/kB_wrtn/s)。
-
數據模式
首次報告:第一次
iostat
指令指示了系統啟動以來的累計數據(需注意可能包含歷史干擾)。
持續監控:通過 iostat 間隔秒數 次數(如 iostat 2 5)動態刷新數據。
2. 語法介紹
使用 help 可以看到用法如下:
-sh-4.4$ iostat --help
用法: iostat [ 選項 ] [ <時間間隔> [ <次數> ] ]
相關選項介紹如下:
選項 | 功能描述 | 示例命令 |
---|---|---|
-c | 僅顯示 CPU 統計信息(與 -d 互斥) | iostat -c 1 5 |
-d | 僅顯示磁盤統計信息(與 -c 互斥) | iostat -d sda |
-x | 輸出擴展 I/O 詳情(如 await 、svctm ) | iostat -x 1 |
-k/-m | 以 KB/MB 為單位顯示數據(默認塊單位) | iostat -k |
-p | 指定監控的磁盤分區(如 sda ) | iostat -p sda 2 |
-t | 添加時間戳(格式 HH:MM:SS ) | iostat -t |
-z | 跳過零 I/O 活動設備,僅顯示活躍設備 | iostat -z |
-
-x 擴展IO詳細介紹
-
iostat -x
的輸出分為兩部分:CPU 統計信息(默認顯示,可通過-d
隱藏)和磁盤設備統計信息。以下重點解析磁盤部分的擴展字段(以設備sda
為例):?
字段 含義 Device 磁盤設備名稱(如 sda
、nvme0n1
)。r/s 每秒完成的讀請求數(實際發送到磁盤的讀操作數)。 w/s 每秒完成的寫請求數。 rkB/s 每秒讀千字節數(需結合 -k
選項,或通過rsec/s * 512 / 1024
計算)。wkB/s 每秒寫千字節數。 rrqm/s 每秒合并的讀請求數(內核將相鄰的讀請求合并以提高效率)。 wrqm/s 每秒合并的寫請求數。 %rrqm 在發送到設備之前合并在一起的讀請求的百分比。 %wrqm 在發送到設備之前,寫請求合并在一起的百分比。 r_await 發送到要服務的設備的讀請求的平均時間(以毫秒為單位)。這包括隊列中請求所花費的時間和為它們服務所花費的時間。 w_await 發送到要服務的設備的寫請求的平均時間(以毫秒為單位)。這包括隊列中請求所花費的時間和服務所花費的時間。 aqu-sz 平均等待處理的 IO 請求隊列長度(值越高表示 IO 隊列積壓越嚴重)。老版本是 avgqu-sz
rareq-sz 發送到設備的讀請求的平均大小(單位為千字節)。 wareq-sz 發送給設備的寫請求的平均大小(單位為千字節)。 svctm 平均每個 IO 請求的設備處理時間(不包括隊列等待時間),單位:毫秒。 %util 磁盤設備的利用率(即磁盤忙于處理 IO 請求的時間百分比,接近 100% 表示磁盤飽和)。
-
3. 應用場景
-
性能瓶頸分析
- CPU 瓶頸
- %iowait >20% 表示 I/O 等待時間長,可能磁盤成為瓶頸。
- %user + %sys >70% 提示 CPU 處理能力不足,需優化代碼或擴容。
- 磁盤瓶頸(
iostat -x
):- 高 %util(>80%):設備接近滿載,需優化存儲或升級硬件。
- 高 await 與低 svctm:I/O 隊列堆積,檢查并發讀寫。
- CPU 瓶頸
-
數據庫與存儲調優
- 數據庫負載:
- 監控事務日志盤(如
/dev/sdb
)的tps
和rkB/s
,確保讀寫均衡。
- 監控事務日志盤(如
- 數據庫負載:
-
存儲設備評估
- SSD 與 HDD 對比:
- SSD 的
svctm
通常 <1ms,若 HDD 的svctm
持續 >10ms,建議升級存儲介質。
- SSD 的
- SSD 與 HDD 對比:
4. 示例分析
- 高 %util 但低吞吐量:
- 可能頻繁小文件隨機讀寫,導致磁盤頻繁尋道。優化方法:合并 I/O 請求或改用 SSD。
- await 遠高于 svctm:
- 表明 I/O 隊列積壓嚴重。需檢查 avgqu-sz,若隊列過長,需降低并發或提升磁盤性能。
- rkB/s 突增:
- 可能發生大規模數據讀取(如數據庫全表掃描)。需結合業務邏輯判斷是否正常。