一、iostat 命令描述
“iostat”命令用于監測系統輸入/輸出設備的負載情況,其通過觀察設備處于活躍狀態的時間與平均傳輸速率之間的關系來實現這一目的。該命令會生成報告,這些報告可用于調整系統配置,以更好地平衡物理磁盤之間的輸入/輸出負載。
iostat 命令生成的第一份報告會提供有關系統自啟動以來的時間的統計信息(除非使用了 -y 選項)。在這種情況下,第一份報告將被省略。每次后續報告都會涵蓋自上一次報告以來的時間。每次運行 iostat 命令時,都會報告所有統計信息。報告包括一個 CPU 標題行,隨后是一行 CPU 統計信息。在多處理器系統中,CPU 統計信息是按系統范圍計算的,即所有處理器的平均值。會顯示一個設備標題行,隨后是每個配置設備的一行統計信息。
“間隔參數”指定了每次報告之間的時間間隔(以秒為單位)。而“計數參數”則可以與“間隔參數”一同設定。如果指定了“計數參數”,其值將決定在每隔“間隔時間”秒內生成的報告數量。如果
如果未指定計數參數,則間隔參數一經設定,iostat 命令就會持續生成報告。
安裝: yum -y install sysstat
二、iostat 常用參數介紹
參數 | 作用與說明 | 典型用法示例 |
---|---|---|
-c | 僅顯示 CPU 統計(%user %nice %system %iowait %idle) | iostat -c 1 3 |
-d | 僅顯示磁盤/設備統計 | iostat -d 1 |
-x | 擴展模式:額外給出 await svctm %util avgqu-sz 等關鍵指標,定位 I/O 瓶頸必用 | iostat -x 1 |
-k/-m | 以 KiB/s 或 MiB/s 為單位顯示吞吐量(默認是 block/s) | iostat -dk 1 |
-p | 指定某個設備或分區,避免被無關設備刷屏 | iostat -p sda 1 |
-t | 輸出時間戳,方便做日志或趨勢對比 | iostat -xt 1 10 > io.log |
-y | 跳過第一次采樣(避免系統啟動平均值干擾) | iostat -xy 1 |
-z | 隱藏無活動的設備,輸出更干凈 | iostat -dz 1 |
三、實例:
實例1. 輸出所有設置負載情況
如下可以看出我只有一塊設置
nvme0n1
# iostat
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain) 08/04/2025 _x86_64_ (8 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.45 0.00 1.36 2.74 0.00 95.44Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 676.62 11660.61 11867.46 159227855 162052488
scd0 0.00 0.08 0.00 1041 0
cpu屬性值說明:
- %user:正常優先級用戶進程占 CPU 的時間
- %nice:被 nice 降過優先級的用戶進程占 CPU 的時間
- %system:內核態(系統調用、中斷等)占 CPU 的時間
- %iowait:CPU 空閑但等待 I/O 完成的時間
- %steal:被虛擬機 Hypervisor 或其他 VM 偷走的 CPU 時間
- %idle:CPU 真正空閑、無任務可運行的時間
disk屬性值說明:
- tps:每秒傳輸(I/O)次數
- kB_read/s:每秒從設備讀數據量
- kB_wrtn/s:每秒向設備寫數據量
- kB_read:啟動至今累計讀量
- kB_wrtn:啟動至今累計寫量
實例2. 定時顯示所有信息
每隔兩秒顯示,總共顯示3次
# iostat 2 3
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain) 08/04/2025 _x86_64_ (8 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.44 0.00 1.32 2.65 0.00 95.59Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 654.28 11275.47 11475.50 159227963 162052618
scd0 0.00 0.07 0.00 1041 0avg-cpu: %user %nice %system %iowait %steal %idle0.06 0.00 0.31 0.00 0.00 99.62Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0avg-cpu: %user %nice %system %iowait %steal %idle0.06 0.00 0.25 0.00 0.00 99.69Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 0.00 0.00 0.00 0 0
scd0 0.00 0.00 0.00 0 0
實例3. 查看TPS和吞吐量
查看
nvme0n1
磁盤的吞吐量信息,第一次tps顯示644.79
是系統啟動以來(或工具啟動以來)的累計統計”,從第二次開始才是“每 1 秒的實時增量”。
# iostat -d nvme0n1 -m 1 3
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain) 08/04/2025 _x86_64_ (8 CPU)Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn
nvme0n1 644.79 10.85 11.04 155496 158254Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn
nvme0n1 0.00 0.00 0.00 0 0Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn
nvme0n1 0.00 0.00 0.00 0 0
實例4. 查看設備使用率(%util)和響應時間(await)
# iostat -d nvme0n1 -x -k 1 1
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain) 08/04/2025 _x86_64_ (8 CPU)Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
nvme0n1 293.84 341.03 10940.83 11135.15 0.00 0.21 0.00 0.06 3.06 4.47 2.42 37.23 32.65 0.09 5.59
- r/s:每秒讀請求個數(讀 IOPS)
- w/s:每秒寫請求個數(寫 IOPS)
- rMB/s:每秒讀取的數據量(讀吞吐量)
- wMB/s:每秒寫入的數據量(寫吞吐量)
- rrqm/s:每秒合并的讀請求(合并后減少實際磁盤讀)
- wrqm/s:每秒合并的寫請求(合并后減少實際磁盤寫)
- %rrqm:讀請求合并比例(越高越省磁盤)
- %wrqm:寫請求合并比例(越高越省磁盤)
- r_await:讀請求平均響應時間(從提交到完成,單位毫秒)
- w_await:寫請求平均響應時間(從提交到完成,單位毫秒)
- aqu-sz:平均隊列長度
- rareq-sz:(等待 + 正在服務的 I/O 數)
- wareq-sz:平均讀請求大小(KB/請求)
- svctm:平均寫請求大小(KB/請求)
- %util:設備繁忙度(100% 表示磁盤飽和)