Linux 命令(123)—— iostat 命令

1.命令簡介

iostat(IO statistics)命令被用於監視 CPU 和輸入輸出設備的使用情況。iostat 有一個弱點,它不能對某個進程進行深入分析,僅對系統的整體情況進行分析。

iostat 屬於 sysstat 軟件包,可以用 yum install sysstat 直接安裝。

2.命令格式

iostat [OPTIONS] [ DEVICE [...] | ALL ] [ INTERVAL [ COUNT ]]

INTERVAL 表示 iostat 報告的時間間隔,單位秒,COUNT 表示報告的總次數。

3.選項說明

-c
	顯示 CPU 使用情況
-d
	顯示磁盤使用情況
--dec={ 0 | 1 | 2 }
	指定要使用的小數位數,默認爲 2
-g GROUP_NAME { DEVICE [...] | ALL }
	顯示一組設備的統計信息
-H
	此選項必須與選項 -g 一起使用,指示只顯示組的全局統計信息,而不顯示組中單個設備的統計信息
-h
	以可讀格式打印大小
-j { ID | LABEL | PATH | UUID | ... } [ DEVICE [...] | ALL ]
	顯示永久設備名。選項 ID、LABEL 等用於指定持久名稱的類型
-k
	以 KB 爲單位顯示
-m 
	以 MB 爲單位顯示
-N
	顯示磁盤陣列(LVM) 信息
-n
	顯示NFS 使用情況
-p [ { DEVICE [,...] | ALL } ]
	顯示磁盤和分區的情況
-t
	打印時間戳。時間戳格式可能取決於 S_TIME_FORMAT 環境變量
-V
	顯示版本信息並退出
-x
	顯示詳細信息
-y
	如果在給定的時間間隔內顯示多個記錄,則忽略自系統啓動以來的第一個統計信息
-z
	省略在採樣期間沒有活動的任何設備的輸出

4.常用示例

(1)顯示所有設備負載情況。

iostat
Linux 3.10.107-1-tlinux2_kvm_guest-0049 (VM_114_170_centos) 	02/22/20 	_x86_64_	(8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.00    0.12    0.01    0.00   99.77

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               1.57         0.99        40.17    1649382   66723341
vdb               0.14         0.41         3.42     687445    5681756
scd0              0.00         0.00         0.00        318          0

CPU 屬性值說明:

%user:CPU 處在用戶模式下的時間百分比
%nice:CPU 處在帶 NICE 值的用戶模式下的時間百分比,即改變過優先級的進程的佔用 CPU 的百分比
%system:CPU 處在內核模式下的時間百分比
%iowait:CPU 等待輸入輸出完成時間的百分比
%steal:管理程序維護另一個虛擬處理器時,虛擬 CPU 的無意識等待時間百分比
%idle:CPU 空閒時間百分比

注意:如果 %iowait 的值過高,表示硬盤存在 I/O 瓶頸,%idle 值高,表示 CPU 較空閒,如果 %idle 值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量。%idle 值如果持續低於10,那麼系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU。

磁盤屬性值說明:

Device:/dev 目錄下的磁盤(或分區)名稱
tps:該設備每秒的傳輸次數。一次傳輸即一次 I/O 請求,多個邏輯請求可能會被合併爲一次 I/O 請求。一次傳輸請求的大小是未知的
Blk_read/s (kB_read/s, MB_read/s):每秒讀取的數據大小。每個塊等同於扇區,大小爲 512B
Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s):每秒寫入的數據大小
Blk_read (kB_read, MB_read):讀取數據的總大小
Blk_wrtn (kB_wrtn, MB_wrtn):寫入數據的總大小

(2)顯示磁盤的詳細使用情況。

iostat -dx
Linux 3.10.107-1-tlinux2_kvm_guest-0049 (VM_114_170_centos) 	02/22/20 	_x86_64_	(8 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.03     1.58    0.05    1.53     0.99    40.16    52.35     0.00    2.51    4.53    2.45   0.48   0.08
vdb               0.00     0.12    0.02    0.12     0.41     3.41    53.61     0.00    8.99    2.98    9.99   0.38   0.01
scd0              0.00     0.00    0.00    0.00     0.00     0.00     7.23     0.00    0.41    0.41    0.00   0.41   0.00

磁盤屬性值說明:

Device:/dev 目錄下的磁盤(或分區)名稱
rrqm/s:每秒合併到設備隊列中的讀取請求數
wrqm/s:每秒合併到設備隊列中的寫請求數
r/s:設備每秒完成的讀請求數
w/s:設備每秒完成的寫請求數
rsec/s (rkB/s, rMB/s):每秒讀取的數據大小。每扇區大小爲 512 字節
wsec/s (wkB/s, wMB/s):每秒寫入的數據大小
avgrq-sz:平均每次設備 I/O 操作的數據大小 
avgqu-sz: I/O 請求隊列平均長度
await:每次 I/O 平均耗時 (單位毫秒)。包括在請求隊列中的等待時間和真正 I/O 時間
r_await:每個讀操作平均耗時(單位毫秒)。包括在請求隊列中的等待時間和真正讀取時間
w_await:每個寫操作平均耗時(單位毫秒)。包括在請求隊列中的等待時間和真正寫入時間
svctm:平均每次設備 I/O 操作的服務時間(單位毫秒)。警告!不要再信任此字段,此字段將在將來的 sysstat 版本中刪除
%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔 1s,該 設備有 0.8s 在處理 I/O,而 0.2s 閒置,那麼該設備的 %util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度

注意:如果 %util 是100%,表明產生的 I/O 請求太多,設備已經接近滿負荷運行了(當然如果磁盤具有併發能力,即使 %util 是 100%,磁盤使用未必就到了瓶頸,比如 RAID 陣列和現代固態硬盤)。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大於 svctm,說明I/O 隊列太長,I/O 響應太慢,則需要進行必要優化。如果 avgqu-sz 比較大,也表示有大量 I/O 在等待。

(3)查看指定磁盤的負載情況。

iostat -d vda
Linux 3.10.107-1-tlinux2_kvm_guest-0049 (VM_114_170_centos) 	02/22/20 	_x86_64_	(8 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               1.57         0.99        40.16    1649382   67150673

(4)只查看 CPU 使用情況。每一個間隔 1s 顯示一次,總共顯示 2 次。

iostat -c 1 3
Linux 3.10.107-1-tlinux2_kvm_guest-0049 (VM_114_170_centos) 	02/22/20 	_x86_64_	(8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.00    0.12    0.01    0.00   99.77

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

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

參考文獻

[1] iostat(1) manual
[2] sysstat 官網
[3] Linux 命令手冊.iostat 命令
[4] 簡書.iostat 命令詳解

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