iostat主要用于監(jiān)控系統(tǒng)設(shè)備的IO負(fù)載情況氮昧,iostat首次運(yùn)行時(shí)顯示自系統(tǒng)啟動(dòng)開始的各項(xiàng)統(tǒng)計(jì)信息考润,之后運(yùn)行iostat將顯示自上次運(yùn)行該命令以后的統(tǒng)計(jì)信息燥透。用戶可以通過指定統(tǒng)計(jì)的次數(shù)和時(shí)間來獲得所需的統(tǒng)計(jì)信息卡睦。
1.命令格式:
iostat[參數(shù)][時(shí)間][次數(shù)]
2.命令功能:
通過iostat方便查看CPU肮疗、網(wǎng)卡爬泥、tty設(shè)備柬讨、磁盤、CD-ROM 等等設(shè)備的活動(dòng)情況,負(fù)載信息袍啡。
3.命令參數(shù):
-C 顯示CPU使用情況
-d 顯示磁盤使用情況
-k 以 KB 為單位顯示
-m 以 M 為單位顯示
-N 顯示磁盤陣列(LVM) 信息
-n 顯示NFS 使用情況
-p[磁盤] 顯示磁盤和分區(qū)的情況
-t 顯示終端和CPU的信息
-x 顯示詳細(xì)信息
-V 顯示版本信息
4.基本使用
$iostat -d -k 1 10
參數(shù) -d 表示踩官,顯示設(shè)備(磁盤)使用狀態(tài);-k某些使用block為單位的列強(qiáng)制使用Kilobytes為單位境输;1 10表示蔗牡,數(shù)據(jù)顯示每隔1秒刷新一次,共顯示10次嗅剖。
$iostat -d -k 1 10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 39.29 21.14 1.44 441339807 29990031
sda1 0.00 0.00 0.00 1623 523
sda2 1.32 1.43 4.54 29834273 94827104
sda3 6.30 0.85 24.95 17816289 520725244
sda5 0.85 0.46 3.40 9543503 70970116
sda6 0.00 0.00 0.00 550 236
sda7 0.00 0.00 0.00 406 0
sda8 0.00 0.00 0.00 406 0
sda9 0.00 0.00 0.00 406 0
sda10 60.68 18.35 71.43 383002263 1490928140
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 327.55 5159.18 102.04 5056 100
sda1 0.00 0.00 0.00 0 0
cpu屬性值說明:
%user:CPU處在用戶模式下的時(shí)間百分比辩越。
%nice:CPU處在帶NICE值的用戶模式下的時(shí)間百分比。
%system:CPU處在系統(tǒng)模式下的時(shí)間百分比信粮。
%iowait:CPU等待輸入輸出完成時(shí)間的百分比黔攒。
%steal:管理程序維護(hù)另一個(gè)虛擬處理器時(shí),虛擬CPU的無意識(shí)等待時(shí)間百分比强缘。
%idle:CPU空閑時(shí)間百分比督惰。
備注:如果%iowait的值過高,表示硬盤存在I/O瓶頸旅掂,%idle值高姑丑,表示CPU較空閑,如果%idle值高但系統(tǒng)響應(yīng)慢時(shí)辞友,有可能是CPU等待分配內(nèi)存,此時(shí)應(yīng)加大內(nèi)存容量。%idle值如果持續(xù)低于10称龙,那么系統(tǒng)的CPU處理能力相對(duì)較低留拾,表明系統(tǒng)中最需要解決的資源是CPU。
disk屬性值說明:
rrqm/s: 每秒進(jìn)行 merge 的讀操作數(shù)目鲫尊。即 rmerge/s
wrqm/s: 每秒進(jìn)行 merge 的寫操作數(shù)目痴柔。即 wmerge/s
r/s: 每秒完成的讀 I/O 設(shè)備次數(shù)。即 rio/s
w/s: 每秒完成的寫 I/O 設(shè)備次數(shù)疫向。即 wio/s
rsec/s: 每秒讀扇區(qū)數(shù)咳蔚。即 rsect/s
wsec/s: 每秒寫扇區(qū)數(shù)。即 wsect/s
rkB/s: 每秒讀K字節(jié)數(shù)搔驼。是 rsect/s 的一半谈火,因?yàn)槊可葏^(qū)大小為512字節(jié)。
wkB/s: 每秒寫K字節(jié)數(shù)舌涨。是 wsect/s 的一半糯耍。
avgrq-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。
avgqu-sz: 平均I/O隊(duì)列長(zhǎng)度囊嘉。
await: 平均每次設(shè)備I/O操作的等待時(shí)間 (毫秒)温技。
svctm: 平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (毫秒)。
%util: 一秒中有百分之多少的時(shí)間用于 I/O 操作扭粱,即被io消耗的cpu百分比
備注:如果 %util 接近 100%舵鳞,說明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷琢蛤,該磁盤可能存在瓶頸蜓堕。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時(shí)間虐块;如果 await 遠(yuǎn)大于 svctm俩滥,說明I/O 隊(duì)列太長(zhǎng),io響應(yīng)太慢贺奠,則需要進(jìn)行必要優(yōu)化霜旧。如果avgqu-sz比較大,也表示有當(dāng)量io在等待儡率。
5.常見用法
$iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看設(shè)備使用率(%util)挂据、響應(yīng)時(shí)間(await)
iostat -c 1 10 #查看cpu狀態(tài)
- 實(shí)例分析
$$iostat -d -k 1 |grep sda10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda10 60.72 18.95 71.53 395637647 1493241908
sda10 299.02 4266.67 129.41 4352 132
sda10 483.84 4589.90 4117.17 4544 4076
sda10 218.00 3360.00 100.00 3360 100
sda10 546.00 8784.00 124.00 8784 124
sda10 827.00 13232.00 136.00 13232 136
上面看到,磁盤每秒傳輸次數(shù)平均約400儿普;每秒磁盤讀取約5MB崎逃,寫入約1MB。
iostat -d -x -k 1
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 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24
可以看到磁盤的平均響應(yīng)時(shí)間<5ms眉孩,磁盤使用率>80个绍。磁盤響應(yīng)正常勒葱,但是已經(jīng)很繁忙了(主要是看%util和svctm)。
六巴柿、總結(jié)
????????如果 %util 接近 100%凛虽,說明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷广恢,該磁盤可能存在瓶頸凯旋。 idle小于70% IO壓力就較大了,一般讀取速度有較多的wait钉迷。
同時(shí)可以結(jié)合vmstat 查看查看b參數(shù)(等待資源的進(jìn)程數(shù))和wa參數(shù)(IO等待所占用的CPU時(shí)間的百分比至非,高過30%時(shí)IO壓力高)。
????????另外 await 的參數(shù)也要多和 svctm 來參考糠聪。差的過高就一定有 IO 的問題荒椭。avgqu-sz 也是個(gè)做 IO 調(diào)優(yōu)時(shí)需要注意的地方,這個(gè)就是直接每次操作的數(shù)據(jù)的大小枷颊,如果次數(shù)多享怀,但數(shù)據(jù)拿的小的話践付,其實(shí) IO 也會(huì)很小。如果數(shù)據(jù)拿的大,才IO 的數(shù)據(jù)會(huì)高针姿。也可以通過 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s饱须。也就是講斥滤,讀定速度是這個(gè)來決定的谍椅。
svctm 一般要小于 await (因?yàn)橥瑫r(shí)等待的請(qǐng)求的等待時(shí)間被重復(fù)計(jì)算了),svctm 的大小一般和磁盤性能有關(guān)界赔,CPU/內(nèi)存的負(fù)荷也會(huì)對(duì)其有影響丢习,請(qǐng)求過多也會(huì)間接導(dǎo)致 svctm 的增加。await 的大小一般取決于服務(wù)時(shí)間(svctm) 以及 I/O 隊(duì)列的長(zhǎng)度和 I/O 請(qǐng)求的發(fā)出模式淮悼。如果 svctm 比較接近 await咐低,說明 I/O 幾乎沒有等待時(shí)間;如果 await 遠(yuǎn)大于 svctm袜腥,說明 I/O 隊(duì)列太長(zhǎng)见擦,應(yīng)用得到的響應(yīng)時(shí)間變慢,如果響應(yīng)時(shí)間超過了用戶可以容許的范圍羹令,這時(shí)可以考慮更換更快的磁盤鲤屡,調(diào)整內(nèi)核 elevator 算法,優(yōu)化應(yīng)用福侈,或者升級(jí) CPU酒来。
參考資料:
http://blog.csdn.net/gxiaop/article/details/55098842
http://www.orczhou.com/index.php/2010/03/iostat-detail/