1. 程式人生 > >Linux使用iostat監測IO狀態

Linux使用iostat監測IO狀態

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%,因為磁碟的併發能力,所以磁碟使用未必就到了瓶頸)

常見用法

iostat -d -k 1 10            #檢視TPS和吞吐量資訊
iostat -d -x -k 1 10       #檢視裝置使用率(%util)、響應時間(await)
iostat -c 1 10                #檢視cpu狀態