Linux使用iostat監測IO狀態
阿新 • • 發佈:2018-11-08
Linux系統中通過iostat我們能檢視到系統IO狀態資訊,從而確定IO效能是否存在瓶頸
命令安裝
#Ubuntu安裝命令
apt-get install -y sysstat
#centos安裝命令
yum install -y sysstat
命令使用
[email protected]:~# iostat --help Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ] [ <device> [...] | ALL ]
iostat 主要有三個操作箱,options 操作項,interval指定統計時間間隔,count總共輸出次數
-c 引數,可以用來插卡部分cpu狀態資訊
[email protected]:~# iostat -c Linux 4.4.0-112-generic (ubuntu) 04/28/2018 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.05 0.01 0.06 0.03 0.00 99.85
-k 引數,某些使用block為單位的列強制使用Kilobytes為單位
[email protected]:~# iostat -k 1 10 Linux 4.4.0-112-generic (ubuntu) 04/28/2018 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.05 0.01 0.06 0.03 0.00 99.85 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.13 0.97 6.84 7384588 52320688 dm-0 0.18 0.93 6.76 7095137 51752244 dm-1 0.02 0.02 0.07 187844 568444 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.50 0.00 0.00 99.50 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0 dm-1 0.00 0.00 0.00 0 0
-d 引數,顯示裝置(磁碟)使用狀態
[email protected]:~# iostat -d 1 3
Linux 4.4.0-112-generic (ubuntu) 04/28/2018 _x86_64_ (2 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.13 0.96 6.84 7384588 52320728
dm-0 0.18 0.93 6.76 7095137 51752284
dm-1 0.02 0.02 0.07 187844 568444
輸出列表示:
tps:該裝置每秒的傳輸次數“一次傳輸”意思是“一次I/O請求”。多個邏輯請求可能會被合併為“一次I/O請求”。“一次傳輸”請求的大小是未知的。
kB_read/s:每秒從裝置(drive expressed)讀取的資料量;
kB_wrtn/s:每秒向裝置(drive expressed)寫入的資料量;
kB_read:讀取的總資料量;kB_wrtn:寫入的總數量資料量;這些單位都為Kilobytes。
-x 引數,輸出更多詳細資訊
[email protected]:~# iostat -x 1 2
Linux 4.4.0-112-generic (ubuntu) 04/28/2018 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.05 0.01 0.06 0.03 0.00 99.85
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.08 0.04 0.10 0.96 6.84 116.13 0.00 17.07 5.22 21.95 3.64 0.05
dm-0 0.00 0.00 0.04 0.15 0.93 6.76 83.50 0.01 39.66 5.85 48.09 2.62 0.05
dm-1 0.00 0.00 0.01 0.02 0.02 0.07 8.05 0.01 226.25 4.61 297.48 0.57 0.00
解釋一下 -x引數輸出列意思
rrqm/s:每秒這個裝置相關的讀取請求有多少被Merge了
(當系統呼叫需要讀取資料的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的資料,FS會將這個請求合併Merge)
wrqm/s:每秒這個裝置相關的寫入請求有多少被Merge了。
rsec/s:每秒讀取的扇區數;wsec/:每秒寫入的扇區數。
r/s:每秒向裝置發出的讀取請求的數量
w/s:每秒向裝置發出的寫入請求數;
await:每一個IO請求的處理的平均時間(單位是毫秒)。
這裡可以理解為IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了。
%util:在統計時間內所有處理IO時間,除以總共統計時間。
例如,如果統計間隔1秒,該裝置有0.8秒在處理IO,而0.2秒閒置,那麼該裝置的%util = 0.8/1 = 80%,所以該引數暗示了裝置的繁忙程度。
一般地,如果該引數是100%表示裝置已經接近滿負荷運行了
(當然如果是多磁碟,即使%util是100%,因為磁碟的併發能力,所以磁碟使用未必就到了瓶頸)