Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 磁碟 I/O 性能分析實戰:iostat 關鍵指標解讀與瓶頸判斷

編輯:Linux 教學

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

瓶頸判斷黃金法則

  1. %util ≥ 70%:I/O 壓力大,讀寫延遲明顯增加
  2. %util → 100%:設備飽和,存在明顯瓶頸
  3. await ≫ svctm:隊列排隊嚴重,應用響應變慢
  4. svctm 偏大:設備本身性能不足(HDD vs SSD、RAID 降級、固件問題)
  5. avgqu-sz 持續 > 1:並發請求超過設備處理能力

結合 vmstat 輔助分析

vmstat 1 5
# 關注:
# b 列:阻塞等待資源的進程數(持續 > 0 表明 I/O 瓶頸)
# wa 列:CPU 等待 I/O 佔比(> 30% 為高壓)

生活化比喻(便於記憶)

  • r/s + w/s:顧客總到達率
  • avgqu-sz:平均排隊人數
  • svctm:收銀員掃碼速度
  • await:顧客平均等待時間(含排隊)
  • avgrq-sz:平均每單商品數
  • %util:收銀台前有人排隊的時間佔比

優化建議

  • 應用層:合併小 I/O、異步寫入、減少 fsync 頻率、啟用緩存
  • 文件系統:noatime、deadline/noop 調度器(SSD)、適當 commit 間隔
  • 硬件層:RAID 卡 BBU/WB、NVMe 替代 SATA SSD、增加磁碟組 RAID 0/10
  • 核心參數:/sys/block/sdX/queue/scheduler、nr_requests、read_ahead_kb
Copyright © Windows教程網 All Rights Reserved