佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 如何使用iostat查看linux硬盤IO性能

如何使用iostat查看linux硬盤IO性能

熱門標(biāo)簽:智能手機(jī) 使用U盤裝系統(tǒng) 網(wǎng)站建設(shè) 檢查注冊表項(xiàng) 阿里云 美圖手機(jī) 硅谷的囚徒呼叫中心 百度競價(jià)點(diǎn)擊價(jià)格的計(jì)算公式

TOP 觀察:IO等待所占用的CPU時(shí)間的百分比,高過30%時(shí)IO壓力高其次、用iostat -x 1 10

[root@controller ~]#iostat -d -k 1 10
Device:     tps  kB_read/s  kB_wrtn/s  kB_read  kB_wrtn
sda       19.00     0.00    112.00     0    112
sda1       0.00     0.00     0.00     0     0
sda2       0.00     0.00     0.00     0     0
sda3       0.00     0.00     0.00     0     0
sda4       0.00     0.00     0.00     0     0
sda5       3.00     0.00    16.00     0     16
sda6       0.00     0.00     0.00     0     0
sda7      16.00     0.00    96.00     0    96

tps:該設(shè)備每秒的傳輸次數(shù),一次傳輸?shù)囊馑际恰耙淮蜪/O請求”

  • kB_read/s:每秒從設(shè)備讀取的數(shù)據(jù)量
  • kB_wrtn/s:每秒向設(shè)備寫入的數(shù)據(jù)量
  • kB_read:讀取的總數(shù)據(jù)量
  • kB_wrtn :寫入的總數(shù)量數(shù)據(jù)量

使用-x獲得更多信息

使用-x獲得更多信息

查看設(shè)備使用率(%util)、響應(yīng)時(shí)間(await)

[root@controller ~]#iostat -d -x -k 1 10
Device:     rrqm/s  wrqm/s  r/s  w/s   rkB/s  wkB/s  avgrq-sz avgqu-sz  await svctm %util
sda        0.00    22.00 0.00 18.00   0.00  160.00  17.78   0.07     3.78  3.78  6.80
sda1       0.00    0.00  0.00 0.00   0.00   0.00   0.00    0.00     0.00  0.00  0.00
sda2       0.00    0.00  0.00 0.00   0.00   0.00   0.00    0.00     0.00  0.00  0.00
sda3       0.00    15.00 0.00 2.00   0.00   68.00  68.00    0.01     6.50  6.50  1.30
sda4       0.00    0.00  0.00 0.00   0.00   0.00   0.00    0.00     0.00  0.00  0.00
sda5       0.00    0.00  0.00 0.00   0.00   0.00   0.00    0.00     0.00  0.00  0.00
sda6       0.00    0.00  0.00 0.00   0.00   0.00   0.00    0.00     0.00  0.00  0.00
sda7       0.00   7.00 0.00 16.00   0.00  92.00  11.50   0.06    3.44  3.44  5.50
  • rrqm/s:每秒進(jìn)行merge的讀操作數(shù)目。即delta(rmerge)/s
  • wrqm/s:每秒進(jìn)行merge的寫操作數(shù)目。即delta(wmerge)/s
  • r/s:每秒完成的讀I/O設(shè)備次數(shù)。即delta(rio)/s
  • w/s:每秒完成的寫I/O設(shè)備次數(shù)。即delta(wio)/s
  • rsec/s:每秒讀扇區(qū)數(shù)。即delta(rsect)/s
  • wsec/s:每秒寫扇區(qū)數(shù)。即delta(wsect)/s
  • rkB/s:每秒讀K字節(jié)數(shù)。是rsect/s的一半,因?yàn)槊可葏^(qū)大小為512字節(jié)。(需要計(jì)算)
  • wkB/s:每秒寫K字節(jié)數(shù)。是wsect/s的一半。(需要計(jì)算)
  • avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū))。delta(rsect+wsect)/delta(rio+wio)
  • avgqu-sz:平均I/O隊(duì)列長度。即delta(aveq)/s/1000(因?yàn)閍veq的單位為毫秒)。
  • await:平均每次設(shè)備I/O操作的等待時(shí)間(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
  • svctm:平均每次設(shè)備I/O操作的服務(wù)時(shí)間(毫秒)。即delta(use)/delta(rio+wio)
  • %util:一秒中有百分之多少的時(shí)間用于I/O操作,或者說一秒中有多少時(shí)間I/O隊(duì)列是非空的。即delta(use)/s/1000(因?yàn)閡se的單位為毫秒)

如果%util接近100%,說明產(chǎn)生的I/O請求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤
可能存在瓶頸。

idle小于70%IO壓力就較大了,一般讀取速度有較多的wait.

同時(shí)可以結(jié)合vmstat查看查看b參數(shù)()和wa參數(shù)()

另外還可以參考

svctm 一般要小于await(因?yàn)橥瑫r(shí)等待的請求的等待時(shí)間被重復(fù)計(jì)算了),svctm 的大小一般和磁盤性能有關(guān),CPU/內(nèi)存的負(fù)荷也會對其有影響,請求過多也會間接導(dǎo)致svctm的增加。await 的大小一般取決于服務(wù)時(shí)間(svctm)以及I/O隊(duì)列的長度和I/O請求的發(fā)出模式。如果svctm比較接近await,說明I/O 幾乎沒有等待時(shí)間;如果await遠(yuǎn)大于svctm,說明I/O 隊(duì)列太長,應(yīng)用得到的響應(yīng)時(shí)間變慢,如果響應(yīng)時(shí)間超過了用戶可以容許的范圍,這時(shí)可以考慮更換更快的磁盤,調(diào)整內(nèi)核elevator 算法,優(yōu)化應(yīng)用,或者升級CPU。

隊(duì)列長度(avgqu-sz)也可作為衡量系統(tǒng)I/O負(fù)荷的指標(biāo),但由于avgqu-sz是按照單位時(shí)間的平均值,所以不能反映瞬間的I/O洪水。

別人一個(gè)不錯(cuò)的例子.(I/O系統(tǒng)vs.超市排隊(duì))

舉 一個(gè)例子,我們在超市排隊(duì)checkout時(shí),怎么決定該去哪個(gè)交款臺呢?首當(dāng)是看排的隊(duì)人數(shù),5個(gè)人總比20人要快吧? 除了數(shù)人頭,我們也常??纯辞懊嫒速徺I的東西多少,如果前面有個(gè)采購了一星期食品的大媽,那么可以考慮換個(gè)隊(duì)排了。還有就是收銀員的速度了,如果碰上了連 錢都點(diǎn)不清楚的新手,那就有的等了。另外,時(shí)機(jī)也很重要,可能5 分鐘前還人滿為患的收款臺,現(xiàn)在已是人去樓空,這時(shí)候交款可是很爽啊,當(dāng)然,前提是那過去的5分鐘里所做的事情比排隊(duì)要有意義 (不過我還沒發(fā)現(xiàn)什么事情比排隊(duì)還無聊的)。

I/O系統(tǒng)也和超市排隊(duì)有很多類似之處:

  • r/s+w/s類似于交款人的總數(shù)
  • 平均隊(duì)列長度(avgqu-sz)類似于單位時(shí)間里平均排隊(duì)人的個(gè)數(shù)
  • 平均服務(wù)時(shí)間(svctm)類似于收銀員的收款速度
  • 平均等待時(shí)間(await)類似于平均每人的等待時(shí)間
  • 平均I/O數(shù)據(jù)(avgrq-sz)類似于平均每人所買的東西多少
  • I/O操作率(%util)類似于收款臺前有人排隊(duì)的時(shí)間比例。

我們可以根據(jù)這些數(shù)據(jù)分析出I/O請求的模式,以及I/O的速度和響應(yīng)時(shí)間。

%util:在統(tǒng)計(jì)時(shí)間內(nèi)所有處理IO時(shí)間,除以總共統(tǒng)計(jì)時(shí)間。例如,如果統(tǒng)計(jì)間隔1秒,該設(shè)備有0.8秒在處理IO,而0.2秒閑置,那么該設(shè)備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設(shè)備的繁忙程度。一般地,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負(fù)荷運(yùn)行了(當(dāng)然如果是多磁盤,即使%util是100%,因?yàn)榇疟P的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。
)

部署一個(gè)程序時(shí)(我測試的是一個(gè)實(shí)時(shí)上傳日志的程序),對系統(tǒng)的cpu、內(nèi)存、io等都要有所考慮,保證系統(tǒng)高效的運(yùn)行。

如果程序本身處理的包特別小,事件很多,壓力大且沒有間隔的話,占用CPU的資源會很多

如果用磁盤緩存,不用內(nèi)存緩存的話,能夠支持?jǐn)帱c(diǎn)重傳,保證數(shù)據(jù)的可靠性上傳,如突然斷電等情況,存入磁盤緩存的數(shù)據(jù)等到恢復(fù)后會依然上傳,而不會丟失,但是相對的也會增加讀寫磁盤的次數(shù),如果數(shù)據(jù)量比較小,速度還是可以忍受的。

下面是別人寫的這個(gè)參數(shù)輸出的分析

# iostat -x 1
avg-cpu: %user  %nice  %sys  %idle
16.24  0.00  4.31  79.44
Device:        rrqm/s wrqm/s  r/s  w/s   rsec/s wsec/s  rkB/s wkB/s  avgrq-sz avgqu-sz  await svctm %util
/dev/cciss/c0d0   0.00  44.90  1.02 27.55  8.16 579.59   4.08  289.80  20.57  22.35    78.21  5.00 14.29
/dev/cciss/c0d0p1 0.00  44.90   1.02 27.55  8.16 579.59   4.08  289.80  20.57  22.35    78.21  5.00 14.29
/dev/cciss/c0d0p2 0.00  0.00 0.00 0.00  0.00  0.00   0.00   0.00   0.00   0.00  0.00  0.00  0.00

上面的iostat輸出表明秒有28.57次設(shè)備I/O操作:總IO(io)/s=r/s(讀)+w/s(寫)=1.02+27.55=28.57(次/秒)其中寫操作占了主體(w:r=27:1)。

平均每次設(shè)備I/O操作只需要5ms就可以完成,但每個(gè)I/O請求卻需要等上78ms,為什么?因?yàn)榘l(fā)出的I/O請求太多(每秒鐘約29個(gè)),假設(shè)這些請求是同時(shí)發(fā)出的,那么平均等待時(shí)間可以這樣計(jì)算:

平均等待時(shí)間=單個(gè)I/O服務(wù)時(shí)間*(1+2+…+請求總數(shù)-1)/請求總數(shù)

應(yīng)用到上面的例子:平均等待時(shí)間=5ms*(1+2+…+28)/29=70ms,和iostat給出的78ms的平均等待時(shí)間很接近。這反過來表明I/O是同時(shí)發(fā)起的。

每秒發(fā)出的I/O請求很多(約29個(gè)),平均隊(duì)列卻不長(只有2個(gè)左右),這表明這29個(gè)請求的到來并不均勻,大部分時(shí)間I/O是空閑的。

一秒中有14.29%的時(shí)間I/O隊(duì)列中是有請求的,也就是說,85.71%的時(shí)間里I/O系統(tǒng)無事可做,所有29個(gè)I/O請求都在142毫秒之內(nèi)處理掉了。

delta(ruse+wuse)/delta(io) =await=78.21=>delta(ruse+wuse)/s=78.21*delta(io)/s= 78.21*28.57=2232.8,表明每秒內(nèi)的I/O請求總共需要等待2232.8ms。所以平均隊(duì)列長度應(yīng)為 2232.8ms/1000ms=2.23,而iostat給出的平均隊(duì)列長度(avgqu-sz)卻為22.35,為什么?!因?yàn)?iostat中有bug,avgqu-sz值應(yīng)為2.23,而不是22.35。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:湖北 通遼 懷化 湘潭 煙臺 黃山 山南 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何使用iostat查看linux硬盤IO性能》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    文昌市| 肇源县| 塔城市| 本溪市| 泰来县| 大名县| 宣汉县| 合川市| 漳平市| 高雄县| 连平县| 太原市| 平舆县| 乌鲁木齐市| 酒泉市| 河间市| 金华市| 高要市| 会理县| 延边| 北票市| 定安县| 自贡市| 新化县| 黄石市| 贡嘎县| 泽库县| 疏勒县| 鲁甸县| 石门县| 弥勒县| 尤溪县| 焉耆| 峨眉山市| 长沙市| 铜山县| 右玉县| 康马县| 库车县| 麻阳| 叶城县|