Linux命令詳解----iostat


Linux系統出現了性能問題,一般我們可以通過top、iostat、free、vmstat等命令來查看初步定位問題。在一個以前看到系統監控工具,總在想那些監控工具的代理,如何收集系統性能信息,io性能,cpu使用,帶寬使用等信息,偶然發現,不同系統均提供有性能分析工具的,代理可通過這些命令獲取系統性能信息,個人猜測,不知道具體是不是這樣的。其中iostat可以給我們提供豐富的IO狀態數據,下邊就來看一下iostat如何使用,命令能夠輸出那些信息。

簡述

Linux系統中通過iostat我們能查看到系統IO狀態信息,從而確定IO性能是否存在瓶頸。

命令安裝

iostat是查看Linux系統io是否存在瓶頸頂好用的一個命令,但是由此而系統默認沒有安裝的,以centos系統為例,看看如何安裝iostat命令。

[root@localhost ~]# iostat
-bash: iostat: command not found
[root@localhost ~]# yum install -y sysstat

命令使用

[root@localhost ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ]
[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]

iostat 主要有三個操作箱,options 操作項,interval指定統計時間間隔,count總共輸出次數
-c 參數,可以用來插卡部分cpu狀態信息

[root@localhost ~]# iostat -c 
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

-k 參數,某些使用block為單位的列強制使用Kilobytes為單位

[root@localhost ~]# iostat -k 1 10
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.14         0.04         1.65     969915   41732790
dm-0              0.42         0.04         1.65     936269   41632492
dm-1              0.00         0.00         0.00      19920      62056
dm-2              0.00         0.00         0.00       1001      38212
dm-3              0.00         0.01         0.00     127405       7160

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               4.00         0.00        48.00          0         48
dm-0             12.00         0.00        48.00          0         48
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0
dm-3              0.00         0.00         0.00          0          0

-d 參數,顯示設備(磁盤)使用狀態

[root@localhost ~]# iostat -d 1 3
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.14         0.08         3.31    1939830   83470564
dm-0              0.42         0.07         3.30    1872538   83269968
dm-1              0.00         0.00         0.00      39840     124112
dm-2              0.00         0.00         0.00       2002      76424
dm-3              0.00         0.01         0.00     254810      14320
解釋一下輸出列表示什么意思:
tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。“一次傳輸”意思是“一次I/O請求”。多個邏輯請求可能會被合並為“一次I/O請求”。“一次傳輸”請求的大小是未知的。

kB_read/s:每秒從設備(drive expressed)讀取的數據量;kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;kB_read:讀取的總數據量;kB_wrtn:寫入的總數量數據量;這些單位都為Kilobytes。

上面的例子中,我們可以看到磁盤sda以及它的各個分區的統計數據,當時統計的磁盤總TPS是39.29,下面是各個分區的TPS。(因為是瞬間值,所以總TPS並不嚴格等於各個分區TPS的總和)

-x 參數,輸出更多詳細信息

[root@localhost ~]# iostat -x 1 2
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.27    0.00    0.14     0.08     3.31    23.78     0.00    0.31    1.51    0.29   0.16   0.00
dm-0              0.00     0.00    0.00    0.41     0.07     3.30     8.13     0.00    2.64    2.05    2.64   0.06   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    2.29    1.61    2.51   0.08   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     8.01     0.00   19.82    0.64   20.30   0.03   0.00
dm-3              0.00     0.00    0.00    0.00     0.01     0.00    30.85     0.00    0.04    0.02    0.20   0.02   0.00
解釋一下 -x參數輸出列意思
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合並Merge);wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。

rsec/s:每秒讀取的扇區數;wsec/:每秒寫入的扇區數。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的響應時間,一般地系統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狀態

使用實例

查看指定磁盤吞吐量和速率

[root@localhost ~]# iostat -d -d 1 1
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.14         0.08         3.31    1939830   83482716
dm-0              0.42         0.07         3.30    1872538   83282120
dm-1              0.00         0.00         0.00      39840     124112
dm-2              0.00         0.00         0.00       2002      76424
dm-3              0.00         0.01         0.00     254810      14320
#從結果看到平均傳輸次數0.14,每秒讀取0.08M,每秒寫3.31M

磁盤性能統計

[root@localhost ~]# iostat -x -k 1 1
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

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.27         0.00   0.14     0.04     1.65    23.78       0.00         0.31    1.51            0.29   0.16   0.00


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM