Linux iostat
验证:未记录
- 适用版本
- 未记录
- 验证范围
- 尚未登记验证记录。
本文缩写(英文全称与中文含义)
| 缩写 | 英文全称/名称 | 中文含义 |
|---|---|---|
| CPU | Central Processing Unit | 中央处理器 |
| IO | Input/Output | 输入/输出 |
| IOPS | Input/Output Operations Per Second | 每秒输入输出操作数 |
| KB | Kilobyte | 十进制千字节,1 KB = 1000 字节;某些旧工具用法不同 |
| MB | Megabyte | 十进制兆字节,1 MB = 10⁶ 字节 |
| SSD | Solid-State Drive | 固态硬盘 |
1. Command#
iostat -xmd 1一句话:每 1 秒输出磁盘 extended stats,用来看磁盘是否出现延迟、繁忙、队列堆积。
-x: extended statistics
-m: throughput 用 MB/s 显示
-d: 只显示 device,不显示 CPU summary
1: 每 1 秒刷新一次2. Normal Output Shape#
iostat -xmd 1 通常会持续输出每块磁盘的读写速率、延迟、队列、利用率。
Linux 5.15.0-xxx (host01) 07/12/2026 _x86_64_ (4 CPU)
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
nvme0n1 5.00 80.00 0.20 12.50 0.00 2.00 0.00 2.44 1.20 25.80 2.10 40.00 160.00 0.80 68.00
nvme1n1 0.00 2.00 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.50 0.00 0.00 25.00 0.20 1.003. Field Units#
%util不是所有存储设备的统一饱和度;结合 await、队列深度、吞吐和设备并行能力判断,不能只凭单个百分比下结论。
Device: block device name,不是资源单位
r/s: 单位是 次数/s,每秒 read requests
w/s: 单位是 次数/s,每秒 write requests
rMB/s: 单位是 MB/s,每秒读取多少 MB
wMB/s: 单位是 MB/s,每秒写入多少 MB
rrqm/s: 单位是 次数/s,每秒合并的 read requests
wrqm/s: 单位是 次数/s,每秒合并的 write requests
%rrqm: 单位是 %,read request merge 比例
%wrqm: 单位是 %,write request merge 比例
r_await: 单位是 ms,read request 平均等待 + 服务时间
w_await: 单位是 ms,write request 平均等待 + 服务时间
aqu-sz: 单位是 request count,平均队列长度,也就是平均有多少 IO request 在排队或执行
rareq-sz: 单位是 KB,平均每个 read request 大小
wareq-sz: 单位是 KB,平均每个 write request 大小
svctm: 单位是 ms,平均 service time;新内核上不建议重点看
%util: 单位是 %,设备处理 IO 的忙碌时间比例4. How To Read Latency#
r_await high: 读延迟高,读请求慢
w_await high: 写延迟高,写请求慢
await high + aqu-sz high: 不只是单次慢,通常还有队列堆积
await high + aqu-sz low: 可能是底层存储单次延迟高,但并发队列不深常见判断:
SSD / NVMe: r_await / w_await 长期几十 ms 通常就要关注
云盘: await 是否异常要结合磁盘类型、IOPS / throughput limit、burst credit
数据库: write await 高会直接影响 commit / flush / checkpoint latency5. How To Read Queue#
aqu-sz: 平均队列长度
%util: 设备忙碌比例
r/s + w/s: IO request 数量压力
rMB/s + wMB/s: 吞吐压力
rareq-sz / wareq-sz: 单次 IO 大小怎么看:
aqu-sz 持续升高: IO 请求排队,磁盘或云盘能力可能不够
%util 接近 100: 设备几乎一直在处理 IO,可能已经打满
%util 不高但 await 高: 可能是网络盘 / 云盘 / 底层存储延迟,不一定是本机队列打满
rMB/s 或 wMB/s 接近云盘上限: 吞吐打满
r/s 或 w/s 接近云盘 IOPS 上限: IOPS 打满6. Practical Read Order#
1. 先看 r_await / w_await: 是否有读写延迟
2. 再看 aqu-sz: 是否有队列堆积
3. 再看 %util: 设备是否长期繁忙
4. 再看 r/s / w/s 和 rMB/s / wMB/s: 是 IOPS 压力还是吞吐压力
5. 最后看 rareq-sz / wareq-sz: IO 是小而多,还是大块读写7. Quick Examples#
w_await high + aqu-sz high + %util high:
写 IO 堵住,可能磁盘写能力不足或云盘写 IOPS / throughput 打满
r_await high + r/s high + rareq-sz small:
大量小读,可能随机读压力或 cache miss
wMB/s high + wareq-sz large:
大块顺序写,常见于备份、日志归档、批处理
await high + %util low:
可能是底层存储延迟、虚拟化层、云盘网络延迟,需要结合云厂商磁盘指标看