iostat命令詳解

svoid發表於2015-03-19

iostat介紹

iostat用於輸出CPU和磁碟I/O相關的統計資訊,便於分析Linux系統效能問題.
命令格式:

shell> iostat --help
用法: iostat [ 選項 ] [  [  ] ]
選項:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]
[  [...] | ALL ] [ -p [  [,...] | ALL ] ]

基本使用

shell> iostat
Linux 2.6.32-220.el6.i686 (rac1)     2015年03月19日     _i686_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.06    0.00    0.78    0.54    0.00   98.61

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.04         0.31         0.00        376          0
sda               4.78       311.94        26.94     379676      32794
dm-0             23.54       304.08        26.91     370106      32752
dm-1              0.26         2.12         0.00       2576          0

各個輸出專案的含義如下:
avg-cpu段:
%user: 在使用者級別執行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系統級別(kernel)執行所使用CPU的百分比.
%iowait: CPU等待硬體I/O時,所佔用CPU百分比.
%idle: CPU空閒時間的百分比.

Device段:
tps: 每秒鐘傳送到的I/O請求數,多個邏輯請求可能會被合併為一次I/O請求,一次I/O請求的大小是未知的。
Blk_read/s: 每秒從裝置讀取的block數. 
Blk_wrtn/s: 每秒向裝置寫入的block數.
Blk_read:   讀入的block總數.
Blk_wrtn:  寫入的block總數.

iostat參 數說明

iostat各個引數說明:

-c 僅顯示CPU統計資訊.與-d選項互斥.
-d 僅顯示磁碟統計資訊.與-c選項互斥.
-k 以K為單位顯示每秒的磁碟請求數,預設單位塊.
-p device | ALL 與-x選項互斥,用於顯示塊裝置及系統分割槽的統計資訊.如: iostat -p hda | iostat -p ALL
-t    在輸出資料時,列印蒐集資料的時間.
-V    列印版本號和幫助資訊.
-x    輸出擴充套件資訊.

-x 引數

iostat -d -x -k 1 5
Linux 2.6.32-220.el6.i686 (rac1)     2015年03月19日     _i686_    (4 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
scd0              0.00     0.00    0.02    0.00     0.09     0.00     8.00     0.00    0.64   0.64   0.00
sda              13.73     2.25    5.28    0.45   120.31    10.79    45.73     0.04    7.49   3.52   2.02
dm-0              0.00     0.00   18.42    2.69   118.01    10.77    12.20     0.18    8.45   0.96   2.02
dm-1              0.00     0.00    0.15    0.00     0.62     0.00     8.00     0.00    2.10   1.42   0.02


rrqm/s:每秒這個裝置相關的讀取請求有多少被Merge了(當系統呼叫需要讀取資料的時候,VFS將請求發到各個FS,如果FS發現不同的
讀取請求讀取的是相同Block的資料,FS會將這個請求合併Merge)。
wrqm/s:每秒這個裝置相關的寫入請求有多少被Merge了。
rsec/s:每秒從裝置讀取的扇區數。
wsec/:每秒向裝置寫入的扇區數。
r/s:  每秒傳送到裝置的讀入請求數。
w/s:  每秒傳送到裝置的寫入請求數。
rkB/s:每秒從裝置讀入的資料量,單位為K.
wkB/s:每秒向裝置寫入的資料量,單位為K.
avgrq-sz: 傳送到裝置的請求的平均大小,單位是扇區.
avgqu-sz: 傳送到裝置的請求的平均佇列長度.
await :每一個IO請求的處理的平均時間.包括髮送請求和執行的時間.單位是毫秒,這裡可以理解為IO的響應時間,
        一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了
svctm : 傳送到裝置的I/O請求的平均執行時間.單位是毫秒.
%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該裝置有0.8秒在處理IO,而0.2秒閒置,
那麼該裝置的%util = 0.8/1 = 80%,所以該引數顯示裝置的繁忙程度。一般地,如果該引數是100%表示裝置已經接近滿負荷
執行了(當然如果是多磁碟,即使%util是100%,因為磁碟的併發能力,所以磁碟使用未必就到了瓶頸)。

iostat示 例

shell> iostat -d -k 2 10         #檢視TPS和吞吐量資訊, 每隔2秒,總共輸出10次.
shell> iostat  -d -x -k 1 10     #檢視裝置使用率(%util)、響應時間(await)
shell> iostat -c 1 10            #檢視cpu狀態
shell> iostat -p sda 2 6         #每隔2秒顯示一次sda及上面所有分割槽的統計資訊,共輸出6次.

參考:
http://huoding.com/2011/07/13/91
http://www.orczhou.com/index.php/2010/03/iostat-detail/
http://blog.csdn.net/zhangjay/article/details/6656771

整理自網路

Svoid
2015-03-19

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29733787/viewspace-1466186/,如需轉載,請註明出處,否則將追究法律責任。