詳解iostat -dx 1命令監(jiān)控IO性能
網(wǎng)站的很多性能問題最終都會(huì)歸結(jié)到IO頭上,所以說理解iostat命令是非常有必要的。
小技巧:你知道iostat是從哪里得到IO相關(guān)信息的嗎?使用strace命令能跟蹤到答案:
shell> strace -eopen iostat open("/proc/diskstats", O_RDONLY)
注:關(guān)于diskstats的說明,參見官方文檔(field1 ~ field11)。
我最常用的iostat命令格式是:『iostat -dx 1』,意思是每隔一秒顯示一次IO擴(kuò)展信息。
shell> iostat -dx 1 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s sda 0.18 37.71 0.65 2.63 50.18 322.08 avgrq-sz avgqu-sz await svctm %util 113.46 0.35 107.49 1.67 0.55 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s sda 0.00 4208.00 0.00 165.00 0.00 163872.00 avgrq-sz avgqu-sz await svctm %util 993.16 119.54 1144.36 6.07 100.10
注:開頭顯示的是自系統(tǒng)啟動(dòng)開始的平均值,后面顯示的是每段時(shí)間間隔里的平均值。
如果你的操作系統(tǒng)里沒有iostat命令的話,除了從源代碼安裝,還可以使用下面方式:
- Centos/Fedora的安裝方式是:yum install sysstat
- Debian/Ubuntu的安裝方式是:aptitude install sysstat
介紹一下相關(guān)參數(shù)的含義:
- rrqm/s:隊(duì)列中每秒鐘合并的讀請(qǐng)求數(shù)量
- wrqm/s:隊(duì)列中每秒鐘合并的寫請(qǐng)求數(shù)量
- r/s:每秒鐘完成的讀請(qǐng)求數(shù)量
- w/s:每秒鐘完成的寫請(qǐng)求數(shù)量
- rsec/s:每秒鐘讀取的扇區(qū)數(shù)量
- wsec/s:每秒鐘寫入的扇區(qū)數(shù)量
- avgrq-sz:平均請(qǐng)求數(shù)據(jù)的大小
- avgqu-sz:平均請(qǐng)求隊(duì)列的長(zhǎng)度
- await:平均每次請(qǐng)求的等待時(shí)間
- svctm:平均每次請(qǐng)求的服務(wù)時(shí)間
- util:設(shè)備的利用率
注:建議對(duì)照源代碼來記憶這些參數(shù)都是如何計(jì)算出來的。
關(guān)于這些參數(shù),相對(duì)重要的是后面幾個(gè),具體來說是:util,svctm,await,avgqu-sz:
util是設(shè)備的利用率。如果它接近100%,通常說明設(shè)備能力趨于飽和(并不絕對(duì),比如設(shè)備有寫緩存)。有時(shí)候可能會(huì)出現(xiàn)大于100%的情況,這多半是計(jì)算時(shí)四舍五入引起的,但如果是磁盤陣列等多盤系統(tǒng),因?yàn)榫哂胁l(fā)IO操作的能力,也會(huì)出現(xiàn)大于100%的情況。
svctm是平均每次請(qǐng)求的服務(wù)時(shí)間。從源代碼里可以看出:(r/s+w/s)*(svctm/1000)=util。舉例子:如果util達(dá)到100%,那么此時(shí)svctm=1000/(r/s+w/s),假設(shè)IOPS是1000,那么svctm大概在1毫秒左右,如果長(zhǎng)時(shí)間大于這個(gè)數(shù)值,說明系統(tǒng)出了問題。不過前面已經(jīng)說過在磁盤陣列等多盤系統(tǒng)中util可能出現(xiàn)偏大的情況,所以svctm相應(yīng)的也可能偏大。
await是平均每次請(qǐng)求的等待時(shí)間。這個(gè)時(shí)間包括了隊(duì)列時(shí)間和服務(wù)時(shí)間,也就是說,一般情況下,await大于svctm,它們的差值越小,則說明隊(duì)列時(shí)間越短,反之差值越大,隊(duì)列時(shí)間越長(zhǎng),說明系統(tǒng)出了問題。
avgqu-sz是平均請(qǐng)求隊(duì)列的長(zhǎng)度。毫無疑問,隊(duì)列長(zhǎng)度越短越好。
說明:svctm參數(shù)在未來某個(gè)版本的iostat會(huì)被刪除,詳見官方文檔。
另外,有時(shí)候iostat會(huì)顯示一些很離譜的結(jié)果,具體原因詳見官方FAQ給出的解釋。
原文:http://huoding.com/2011/07/13/91
【編輯推薦】