天天看點

[linux]Vmstat與iostat結果解析

[linux]iostat 結果解析

iostat 結果解析

[root@20081006-1724 ~]# iostat -x

Linux 2.6.9-78.ELsmp (20081006-1724)    11/20/2009

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.19    0.00    0.04    0.03   99.73

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          0.05  17.60  1.46  7.72   80.69  202.57    40.34   101.29    30.87     0.01    1.06   0.37   0.34

sda1         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    29.90     0.00    3.14   3.14   0.00

sda2         0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00    16.25     0.00    1.51   1.30   0.00

sda3         0.05  17.60  1.46  7.72   80.69  202.57    40.34   101.29    30.87     0.01    1.06   0.37   0.34

dm-0         0.00   0.00  1.46 25.28   80.32  202.26    40.16   101.13    10.57     0.36   13.56   0.13   0.34

dm-1         0.00   0.00  0.05  0.04    0.37    0.32     0.18     0.16     8.00     0.00    6.84   1.30   0.01

rrqm/s: 每秒進行 merge 的讀操作數目。即 delta(rmerge)/s

wrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/s

r/s: 每秒完成的讀 I/O 裝置次數。即 delta(rio)/s

w/s: 每秒完成的寫 I/O 裝置次數。即 delta(wio)/s

rsec/s: 每秒讀扇區數。即 delta(rsect)/s

wsec/s: 每秒寫扇區數。即 delta(wsect)/s

rkB/s: 每秒讀K位元組數。是 rsect/s 的一半,因為每扇區大小為512位元組。

wkB/s: 每秒寫K位元組數。是 wsect/s 的一半。

avgrq-sz: 平均每次裝置I/O操作的資料大小 (扇區)。即 delta(rsect+wsect)/delta(rio+wio)

avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的機關為毫秒)。

await: 平均每次裝置I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

svctm: 平均每次裝置I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)

%util: 一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。

即 delta(use)/s/1000 (因為use的機關為毫秒)

如果 %util 接近 100%,說明産生的I/O請求太多,I/O系統已經滿負荷,該磁盤

可能存在瓶頸。

比較重要的

參數

%util:      一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的

svctm:   平均每次裝置I/O操作的服務時間

await:    平均每次裝置I/O操作的等待時間

avgqu-sz: 平均I/O隊列長度

如果%util接近100%,表明i/o請求太多,i/o系統已經滿負荷,磁盤可能存在瓶頸,一般%util大于70%,i/o壓力就比較大,讀取速度有較多的wait.同時可以結合vmstat檢視檢視b參數(等待資源的程序數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時IO壓力高)。

await 的大小一般取決于服務時間(svctm) 以及 I/O 隊列的長度和 I/O 請求的發出模式。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明 I/O 隊列太長,應用得到的響應時間變慢。

形象的比喻

r/s+w/s 類似于交款人的總數

平均隊列長度(avgqu-sz)類似于機關時間裡平均排隊人的個數

平均服務時間(svctm)類似于收銀員的收款速度

平均等待時間(await)類似于平均每人的等待時間

平均I/O資料(avgrq-sz)類似于平均每人所買的東西多少

I/O 操作率 (%util)類似于收款台前有人排隊的時間比例

裝置IO操作:總IO(io)/s = r/s(讀) +w/s(寫) =1.46 + 25.28=26.74

平均每次裝置I/O操作隻需要0.36毫秒完成,現在卻需要10.57毫秒完成,因為發出的請求太多(每秒26.74個),假如請求時同時發出的,可以這樣計算平均等待時間:

平均等待時間=單個I/O伺服器時間*(1+2+...+請求總數-1)/請求總數

每秒發出的I/0請求很多,但是平均隊列就4,表示這些請求比較均勻,大部分處理還是比較及時

svctm 一般要小于 await (因為同時等待的請求的等待時間被重複計算了),

svctm 的大小一般和磁盤

性能有關,CPU/記憶體的負荷也會對其有影響,請求過多

也會間接導緻 svctm 的增加。await 的大小一般取決于服務時間(svctm) 以及

I/O 隊列的長度和 I/O 請求的發出模式。如果 svctm 比較接近 await,說明

I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明 I/O 隊列太長,應用

得到的響應時間變慢,如果響應時間超過了

使用者可以容許的範圍,這時可以考慮

更換更快的磁盤,調整核心 elevator 算法,優化應用,或者更新 CPU。

隊列長度(avgqu-sz)也可作為衡量系統 I/O 負荷的名額,但由于 avgqu-sz 是

繼續閱讀