★★★★☆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 :顯示擴展統計。
[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。
[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
[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 :~]#
[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
[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