avgrq-sz是iostat -x输出中表示平均I/O请求大小(扇区数)的核心指标,反映每次I/O操作处理的扇区数量,需结合%util、avgqu-sz和await综合判断IO模式与瓶颈。

什么是平均扇区读写指标
Linux里没有叫“平均扇区读写指标”的标准术语,你实际想查的是 avgrq-sz(平均I/O请求大小,单位是扇区)——它直接反映每次I/O操作平均处理多少个扇区。这个值在 iostat -x 输出里固定存在,不是计算出来的,也不是通过 dd 或 blktrace 间接推导的。
iostat -x 输出中怎么看 avgrq-sz
avgrq-sz 是 iostat -x 的核心字段之一,代表平均每个I/O请求涉及的扇区数(默认扇区大小为512字节)。它和磁盘是否顺序/随机访问强相关:
- 机械盘(HDD)上
avgrq-sz长期低于64(≈32KB),大概率是小块随机IO,比如数据库事务或日志写入 - 接近512(≈256KB)或更高,说明是大块顺序读写,如视频转码、备份归档
- SSD上该值偏高不必然代表性能好——得结合
%util和await看:如果%util低但avgrq-sz很高,可能是应用层批量提交,实际负载并不重 - 注意单位:它永远是“扇区数”,不是字节;要换算成KB,需乘以0.5(因为512B = 0.5KB)
为什么不能用 iostat -d 或不加 -x 查这个值
iostat -d 只输出基础吞吐量(r/s, w/s, rkB/s, wkB/s),avgrq-sz 不在其中。不加 -x 的 iostat 默认只显示CPU+TPS+吞吐,扩展指标全被屏蔽。常见错误是执行 iostat -k 1 后找不到 avgrq-sz,本质是漏了 -x 参数。
- 正确命令:
iostat -xk 1(每秒刷新,KB单位,含扩展字段) - 如果只想看某块盘(如
/dev/nvme0n1):iostat -xk 1 /dev/nvme0n1 - 若系统没装
sysstat包,iostat命令根本不存在,需先yum install -y sysstat或apt-get install -y sysstat
avgrq-sz 和 avgqu-sz、await 的关系容易混淆
avgrq-sz 描述“每次请求有多大”,avgqu-sz 描述“队列里平均有多少请求在等”,await 描述“请求从发出到完成花了多久”。三者必须一起看才有意义:
- 高
avgrq-sz+ 高avgqu-sz+ 高await→ 大块IO压满队列,可能是存储带宽打满 - 低
avgrq-sz+ 高avgqu-sz+ 高await→ 小IO堆积,更可能是IOPS瓶颈(尤其HDD随机写) - 高
avgrq-sz+ 低avgqu-sz+ 低await→ 大块IO跑得顺畅,设备没压力 -
avgrq-sz突然跳变(比如从128飙到1024)→ 应用行为异常,比如缓存刷盘策略突变或日志轮转触发批量写
单独盯着 avgrq-sz 看不出问题,它只是拼图的一角。真正要定位IO瓶颈,得把 %util、avgqu-sz、await 和这个值放一块比对,缺一不可。


















