性能分析之iostat

iostat

iostat 主要用於監控系統設備的IO負載情況,iostat首次運行時系統啓動開始的各項統計信息,之後運行iostat將會顯示自上次運行該命令以後的統計信息。用於通過指定統計的次數和時間來獲取所需的統計信息。

命令模式

iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ]  ] [ interval [ count ] ]

參數說明

 -c 僅顯示CPU統計信息.與-d選項互斥.
 -d 僅顯示磁盤統計信息.與-c選項互斥.
 -k 以K爲單位顯示每秒的磁盤請求數,默認單位塊.
 -p device | ALL
  與-x選項互斥,用於顯示塊設備及系統分區的統計信息.也可以在-p後指定一個設備名,如:
  # iostat -p hda
  或顯示所有設備
  # iostat -p ALL
 -t    在輸出數據時,打印蒐集數據的時間.
 -V    打印版本號和幫助信息.
 -x    輸出擴展信息.

入門

iostat -d -k 2 10
iostat -d -k interval [count]

參數說明

  • -d 表示設備(磁盤)使用狀態;
  • -k 某些使用block爲單位的列強制使用Kilobytes爲單位
  • 2[interval] 表示每隔2秒刷新一次
  • 10[count] 表示總共輸出10次
  • -x 用於顯示和io相關的擴展數據
  • -c 用來獲取cpu部分狀態值

輸出信息的意義

  • tps 該設備每秒傳輸的次數。“一次傳輸”意思是“一次IO請求”。多個邏輯請求可能會被合併爲"一次IO請求"。“一次傳輸”請求的大小是未知的。
  • kB_read/s 每秒從設備讀取的數據量
  • kB_wrtn/s 每秒想設備寫入的數據量
  • kB_read 讀取的總數據量
  • kB_wrtn 寫入總數據量

-x 輸出信息的含義

  • rrqm/s 每秒這個設備相同的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS就會將這個請求合併Merge)
  • wrqm/s 每秒這個設備相關的寫入請求有多少被Merge了
  • rsec/s 每秒讀取的扇區數
  • wsec/s 每秒寫入的扇區數
  • rKB/s the number of read requests that were issued to device per second
  • wKB/s the number of write requests that were issued to device per second
  • avgrq-sz 請求扇區大小
  • avgqu-sz 是平均請求隊列的長度。好無疑問,隊列長度越短越好
  • await 每個IO請求的處理的平均時間(單位是毫秒)。這個可以理解爲IO的相應時間,一般地系統IO時間應該低於5ms,如果大於10ms就比較大了。這個時間包括隊列時間和服務時間,也就是說一般情況下 await大於svctm,他們的差值越小說明隊列時間越短,反之差值越大,隊列時間越長,說明系統出了問題。
  • svctm 表示平均每次設備IO操作的服務器時間(以毫秒爲單位)。如果 svctm的值和await很接近,表示幾乎沒有IO等待,磁盤性能很好,如果await的值遠高於svctm的值,則表示IO隊列等待太長,系統運行的應用程序將會變慢。
  • %util 在統計時間內所有IO時間,除以總共統計時間。例如統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閒置,那麼該設備的%util = 0.8/1 = 80%, 所以該參數暗示了設備的繁忙程度。一般地,如果該參數的100%表示該設備已經接近滿負荷運行了。(當然如果是多磁盤,即使%util是100%,因爲磁盤的併發能力,所以磁盤使用未必就到了瓶頸)

常見用法

iostat -x 1 20 iostat -d -k 1 10 查看TPS和吞吐量信息(磁盤讀寫速度單位爲KB) iostat -d -m 2 查看TPShe吞吐量信息(磁盤讀寫速度單位爲MB) iostat -d -x -k 1 10 查看設備使用率(%util),響應時間(await) iostat -c 1 10 查看cpu狀態

實例分析

ostat -d -k 1 |grep sda10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda10            60.72        18.95        71.53  395637647 1493241908
sda10           299.02      4266.67       129.41       4352        132
sda10           483.84      4589.90      4117.17       4544       4076
sda10           218.00      3360.00       100.00       3360        100
sda10           546.00      8784.00       124.00       8784        124
sda10           827.00     13232.00       136.00      13232        136

磁盤每秒傳輸次數平均約400;每秒磁盤讀取約5MB,寫入約1MB。

iostat -d -x -k 1
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29
sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25
sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

磁盤的平均相應時間 < 5ms ,磁盤使用率>80。磁盤相應正常,但是比較繁忙。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章