iostat -x 是磁碟 I/O 性能分析的核心工具。本文結合實際輸出樣本,詳細解讀每個擴展指標含義,提供瓶頸判斷閾值與排查思路。
Linux 2.6.18-128.el5 (SZ-8) 09/08/2011
avg-cpu: %user %nice %system %iowait %steal %idle
16.58 0.00 2.79 0.46 0.00 80.16
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.06 29.28 0.22 37.14 10.21 265.68 14.77 0.02 0.51 0.15 0.55
sda1 0.00 0.00 0.00 0.00 0.00 0.00 10.79 0.00 2.66 2.43 0.00
sda3 0.03 15.17 0.09 35.39 8.98 202.24 11.91 0.01 0.26 0.12 0.44
sdb 0.01 3.91 20.24 20.21 1262.95 1853.94 154.09 0.52 12.84 1.97 7.95
| 指標 | 含義 | 單位 | 計算來源 |
|---|---|---|---|
| rrqm/s | 每秒合併的讀請求數 | 次/秒 | delta(rmerge)/s |
| wrqm/s | 每秒合併的寫請求數 | 次/秒 | delta(wmerge)/s |
| r/s | 每秒完成的讀 I/O 請求 | 次/秒 | delta(rio)/s |
| w/s | 每秒完成的寫 I/O 請求 | 次/秒 | delta(wio)/s |
| rkB/s | 每秒讀取數據量 | KB/秒 | rsec/s / 2 |
| wkB/s | 每秒寫入數據量 | KB/秒 | wsec/s / 2 |
| avgrq-sz | 平均每次 I/O 數據大小 | 扇區(512B) | delta(rsect+wsect)/delta(rio+wio) |
| avgqu-sz | 平均 I/O 隊列長度 | 請求數 | delta(aveq)/s/1000 |
| await | 平均 I/O 等待時間(含隊列+服務) | 毫秒 | delta(ruse+wuse)/delta(rio+wio) |
| svctm | 平均 I/O 服務時間(設備處理) | 毫秒 | delta(use)/delta(rio+wio) |
| %util | 設備帶寬利用率(隊列非空時間比) | 百分比 | delta(use)/s/1000 |
vmstat 1 5
# 關注:
# b 列:阻塞等待資源的進程數(持續 > 0 表明 I/O 瓶頸)
# wa 列:CPU 等待 I/O 佔比(> 30% 為高壓)
r/s + w/s:顧客總到達率avgqu-sz:平均排隊人數svctm:收銀員掃碼速度await:顧客平均等待時間(含排隊)avgrq-sz:平均每單商品數%util:收銀台前有人排隊的時間佔比noatime、deadline/noop 調度器(SSD)、適當 commit 間隔/sys/block/sdX/queue/scheduler、nr_requests、read_ahead_kb