安裝:yum install -y sysstat
命令執(zhí)行完會提示成功安裝,。
iostat可以給我們提供豐富的IO狀態(tài)數(shù)據(jù),,用于輸出CPU和磁盤I/O相關(guān)的統(tǒng)計信息.
iostat 命令格式:
iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ]
[ interval [ count ] ]
1. 基本使用
$iostat -d -k 1 10
參數(shù) -d 表示,,顯示設(shè)備(磁盤)使用狀態(tài),;-k某些使用block為單位的列強制使用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
tps:該設(shè)備每秒的傳輸次數(shù)(Indicate the number of transfers per second that were issued to the device.),?!耙淮蝹鬏敗币馑际恰耙淮蜪/O請求”。多個邏輯請求可能會被合并為“一次I/O請求”,?!耙淮蝹鬏敗闭埱蟮拇笮∈俏粗摹?
kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量,;kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量,;kB_read:讀取的總數(shù)據(jù)量;kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量,;這些單位都為Kilobytes,。
上面的例子中,我們可以看到磁盤sda以及它的各個分區(qū)的統(tǒng)計數(shù)據(jù),,當時統(tǒng)計的磁盤總TPS是39.29,,下面是各個分區(qū)的TPS。(因為是瞬間值,,所以總TPS并不嚴格等于各個分區(qū)TPS的總和)
2. -x 參數(shù)
使用-x參數(shù)我們可以獲得更多統(tǒng)計信息,。
iostat -d -x -k 1 10 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.80 31.49 42.51 2.92 21.26 1.46 1.16 0.03 0.79 2.62 10.28 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 2.00 20.00 381.00 7.00 12320.00 216.00 6160.00 108.00 32.31 1.75 4.50 2.17 84.20
rrqm/s:每秒這個設(shè)備相關(guān)的讀取請求有多少被Merge了(當系統(tǒng)調(diào)用需要讀取數(shù)據(jù)的 時候,VFS將請求發(fā)到各個FS,,如果FS發(fā)現(xiàn)不同的讀取請求讀取的是相同Block的數(shù)據(jù),,F(xiàn)S會將這個請求合并Merge);wrqm/s:每秒這個 設(shè)備相關(guān)的寫入請求有多少被Merge了,。
rsec/s:每秒讀取的扇區(qū)數(shù),;wsec/:每秒寫入的扇區(qū)數(shù)。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second,;
await:每一個IO請求的處理的平均時間(單位是微秒毫秒),。這里可以理解為IO的響應(yīng)時間,一般地系統(tǒng)IO響應(yīng)時間應(yīng)該低于5ms,,如果大于10ms就比較大了,。
%util:在統(tǒng)計時間內(nèi)所有處理IO時間,除以總共統(tǒng)計時間,。例如,,如果統(tǒng)計間隔1秒,該 設(shè)備有0.8秒在處理IO,,而0.2秒閑置,,那么該設(shè)備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設(shè)備的繁忙程度,。一般地,,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,,因 為磁盤的并發(fā)能力,,所以磁盤使用未必就到了瓶頸)。
3. -c 參數(shù)
iostat還可以用來獲取cpu部分狀態(tài)值:
iostat -c 1 10 avg-cpu: %user %nice %sys %iowait %idle 1.98 0.00 0.35 11.45 86.22 avg-cpu: %user %nice %sys %iowait %idle 1.62 0.00 0.25 34.46 63.67
4. 常見用法
$iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看設(shè)備使用率(%util),、響應(yīng)時間(await) iostat -c 1 10 #查看cpu狀態(tài)
5. 實例分析
$$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)時間<5ms,磁盤使用率>80,。磁盤響應(yīng)正常,,但是已經(jīng)很繁忙了。
參考文獻:
- Linux man iostat
- How Linux iostat computes its results
- Linux iostat