Linux 系統管理命令 - iostat - I/O 信息統計

命令詳解

重要星級:

        ★★★★☆html

功能說明:

        iostat 是 I/O statistics ( 輸入/輸出統計 ) 的縮寫,其主要功能是對系統的磁盤 I/O 操做進行監視、它的輸出主要是顯示磁盤讀寫操做的統計信息。同時也會給出 CPU 的使用狀況。同 vmstat 命令同樣,iostat 命令也不能對某個進程進行深刻分析,僅會對系統的總體狀況進行分析。ios

語法格式:

 

    iostat [option] [interval [count]]
    iostat [選項]    [時間間隔 [次數]]

        說明:express

            1. 在 iostat 命令及後面的選項裏,每一個元素之間都至少要有一個空格。
            2. interval 表示兩次輸出之間的間隔時間。
            3. count 表示按照 delay 指定的時間間隔統計的次數。併發

 選項說明:

-c :顯示 CPU 的使用狀況。 ※ -d :顯示磁盤的使用狀況。 ※ -k :每秒以 KB 爲單位顯示數據。

-m :每秒以 MB 爲單位顯示數據。

-n :顯示 NFS 的使用狀況。

-t :顯示每次統計的執行時間。

-p device :指定要統計的磁盤設備名稱,默認爲全部的磁盤設備。

-x :顯示擴展統計。

 使用範例:

顯示全部設備的負載狀況( iostat ):

[root@localhost :~]# iostat     # 若是省略 "時間間隔" 和 "次數" 參數,則僅顯示一次報告後就退出。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.12    0.01    0.00   99.84

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.76        11.79         2.13     133653      24137
dm-0              0.72        10.88         1.95     123336      22089
dm-1              0.01         0.20         0.00       2228          0

        如下是命令結果說明:dom

第1-2行中各列的含義具體以下:
    1. %user :用戶進程消耗的 CPU 時間百分比。
    2. %nice :改變過優先級的進程佔用的 CPU 時間百分比。
    3. %system :系統 ( 內核 ) 進程消耗的 CPU  時間百分比。
    4. %iowait :IO 等待所佔用的 CPU 時間百分比。
    5. %steal :虛擬機強制 CPU 等待的時間百分比。
    6. %idle : CPU 處在空閒狀態的時間百分比。
第3-4行中各列的含義具體以下:
    1. tps :表示該設備每秒的傳輸次數,"一次傳輸" 的意思是 "一次I/O請求",多個邏輯請求可能會被合併爲 "一次I/O請求","一次傳輸" 請求的大小是未知的。
    2. kB_read/s :表示每秒從設備 (drive expressed ) 讀取的數據量。
    3. kB_wrtn/s :表示每秒向設備 (drive expressed ) 寫入的數據量。
    4. kB_read :表示讀取的總數據量。
    5. kB_wrtn :表示寫入的總數量數據量;這些單位都爲 Kilobytes。

定時顯示全部信息( iostat 2 3 ):

[root@localhost :~]# iostat 2 3        # 每隔兩秒刷新顯示一次,共顯示三次。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.12    0.01    0.00   99.84

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.70        10.57         2.10     133661      26527
dm-0              0.66         9.75         1.94     123344      24479
dm-1              0.01         0.18         0.00       2228          0

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

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

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               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

只顯示磁盤統計信息( iostat -d ):

[root@localhost :~]# iostat -d        # 選項 -d 只顯示磁盤的統計信息。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.69        10.47         2.08     133661      26527
dm-0              0.66         9.67         1.92     123344      24479
dm-1              0.01         0.17         0.00       2228          0

[root@localhost :~]# iostat -d -k     # 選項 -k 以 KB 爲單位顯示數據。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.69        10.43         2.07     133661      26527
dm-0              0.65         9.62         1.91     123344      24479
dm-1              0.01         0.17         0.00       2228          0

[root@localhost :~]# iostat -d -m     # 選項 -m 以 MB 爲單位顯示數據。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               0.68         0.01         0.00        130         25
dm-0              0.65         0.01         0.00        120         23
dm-1              0.01         0.00         0.00          2          0

[root@localhost :~]# 

查看擴展信息( iostat -x ):

[root@localhost :~]# iostat -x        # 選項 -x 顯示擴展信息。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.12    0.01    0.00   99.84

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.03    0.38    0.29    10.25     2.05    36.33     0.00    1.26    0.83    1.83   0.49   0.03
dm-0              0.00     0.00    0.33    0.32     9.46     1.89    35.12     0.00    1.70    0.97    2.45   0.50   0.03
dm-1              0.00     0.00    0.01    0.00     0.17     0.00    47.40     0.00    0.22    0.22    0.00   0.15   0.00

        如下是命令結果說明:post

rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了( 當系統調用須要讀取數據的時候,VFS將請求發到各個FS,若是FS發現不一樣的讀取請求讀取的是相同Block的數據,FS會將這個請求合併Merge )。
wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。
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。
rkB/s :每秒讀入的千字節數。
wkB/s :每秒寫入的千字節數。
avgrq-sz :設備平均每次進行 I/O 操做的數據大小( 扇區 )。
avgqu-sz :平均 I/O 隊列長度。
await :每個 I/O 請求的處理的平均時間 ( 毫秒 )。這裏能夠理解爲IO的響應時間,通常地系統IO響應時間應該低於5ms,若是大於10ms就比較大了。
svctm :設備平均每次 I/O 操做的服務時間 ( 毫秒 )。服務時間包括:磁頭尋道時間(目前平均爲3毫秒)+旋轉延遲時間(磁盤轉速相關)+數據傳輸時間 ( 簡單計算時可忽略不計 )
%util:在統計時間內全部處理IO時間,除以總共統計時間。例如,若是統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閒置,那麼該設備的 %util = 0.8/1 = 80%,因此該參數暗示了設備的繁忙程度。通常地,若是該參數是 100% 表示設備已經接近滿負荷運行了 ( 固然若是是多磁盤,即便%util是100%,由於磁盤的併發能力,因此磁盤使用未必就到了瓶頸 )。

        說明:url

            1. 注意 %util 的陷阱和 svctm 數值所有都不可取
            2. IOSTAT中關於%util,svctm存在的陷阱及解決辦法spa

只查看 CPU 的統計信息:

[root@localhost :~]# iostat -c       # 使用了 -c 選項只顯示系統 CPU 的統計信息。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain)     2018年12月27日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.12    0.01    0.00   99.83

 

 

參考資料:

  1. Linux命令詳解----iostat
  2. IOSTAT中關於%util,svctm存在的陷阱及解決辦法
  3. iostat和iowait詳細解說
相關文章
相關標籤/搜索