游乐游手机版
首页/系统平台/文章详情

Linux查看磁盘读写请求合并效率与扇区利用率的方法

时间:2026-08-13 08:02
在 iostat -x 的所有字段里,rrqm s 和 wrqm s 是少数能够直接反映 IO 合并情况的指标。它们表示的是:每秒有多少读 写请求在进入设备前被调度器合并掉。这里有一个很容易混淆的点——它统计的不是“合并后总共减少了多少请求”,而是“有多少请求参与了合并”。另外,数值显示为 0,也不

在 iostat -x 的所有字段里,rrqm/s 和 wrqm/s 是少数能够直接反映 IO 合并情况的指标。它们表示的是:每秒有多少读/写请求在进入设备前被调度器合并掉。这里有一个很容易混淆的点——它统计的不是“合并后总共减少了多少请求”,而是“有多少请求参与了合并”。另外,数值显示为 0,也不能简单理解为完全没有发生合并;也可能是因为队列太浅、访问地址过于分散,或者请求派发得太快,来不及进入排队阶段就被处理掉了。要确认合并是否真的发生,还是需要配合 blktrace 来看:blktrace -d /dev/sda -w 5 -o - | blkparse | grep 'M',只要看到 M 标记,就说明合并确实发生过。

Linux怎么查看具体的磁盘读写请求合并效率及扇区利用率指标

怎么用 iostat -x 看真实合并效率

rrqm/swrqm/s 是最直接标示合并行为的字段,但它们并不是“省掉了多少请求”,而是“调度器在进入队列前主动合并掉的次数”。数值为 0 也不代表没有合并——可能是因为 IO 太零散、队列太浅,或者请求刚进入就被立即派发,根本没有排队机会。

真正体现合并效果的,更多是这些间接指标:

  • a vgrq-sz:平均请求大小(扇区数)。HDD 上长期大于 64(即大于 32KB)通常说明合并较充分;SSD 上该值偏低也属正常,因为 SSD 原生支持小请求并发
  • a vgqu-sz:平均队列长度。在吞吐相近的情况下,a vgqu-sz 越低,通常意味着合并越有效(请求更少,队列压力更小)
  • r_await/w_await:如果合并生效,等待时间通常会下降——但要注意,svctm 才是纯设备处理时间,await - svctm 才是排队等待部分

为什么改了 /sys/block/sda/queue/nomerges 没变化

写入 nomergesrrqm/swrqm/s 没有明显响应,常见原因有:

  • 后台 writeback 机制在起作用:应用层 write() 调用后,数据先进入页缓存,合并发生在 page cache 层或 flush 阶段,iostat 统计的是最终下发到块层的 request,而不是 syscall 本身
  • IO 类型本身不容易触发合并:随机小 IO(例如数据库 WAL 写)、direct I/O、O_SYNC 文件写,都会绕过页缓存,调度器的合并窗口极小,甚至直接关闭
  • 设备类型限制:NVMe 设备默认使用 none 调度器,nomerges 对其无效;而某些 SCSI 控制器固件也可能忽略内核的合并指令

blktrace 验证合并是否真发生

iostat 的数值容易产生误判,要确认合并是否实际发生,必须查看块层原始事件流:

  • 执行:sudo blktrace -d /dev/sda -w 5 -o - | blkparse | grep 'M'
  • 输出中每行带 M 标记(merged)就表示一次前向或后向合并完成
  • 注意:blktrace 需要 root 权限,并且会短暂增加 I/O 延迟,生产环境高负载时不要长时间运行
  • 如果完全没有 M 行,再结合 a vgrq-sz 持续 ≤8(即 ≤4KB),基本可以判断当前负载下没有有效合并

a vgrq-sz 和扇区利用率的关系

a vgrq-sz 表示扇区数,1 个扇区 = 512 字节(传统扇区),但现代设备多使用逻辑扇区 4K。它本身并不等于“扇区利用率”,但可以反推出底层对齐情况:

  • 如果 a vgrq-sz 长期为 8、16、32、64 这类 2 的幂次,大概率说明上层 IO 对齐良好,例如文件系统 block size 与物理扇区匹配
  • 如果 a vgrq-sz 出现大量非整数倍值(如 9、17、33),往往意味着跨扇区读写,会引发读-改-写(R-M-W)放大,实际扇区擦写量远高于逻辑数据量
  • 在 SSD 场景下,a vgrq-sz 过低(<16)+ %util 高 + await 波动大,可能是 FTL 层内部碎片化导致的写放大,此时应查看厂商工具(如 smartctl -a),而不是只看 iostat

判断合并是否生效,不能只看一个数字。rrqm/s 是入口信号,a vgrq-sz 是结果快照,blktrace 是证据链——三者不一致时,优先以 blktraceM 行为准。

来源:https://www.php.cn/faq/2977700.html
上一篇Linux查看异常连接半开统计的方法 下一篇Linux查看物理内存拓扑结构图的方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Mac访达侧边栏图标大小怎么调整设置
系统平台 · 2026-08-13

Mac访达侧边栏图标大小怎么调整设置

Mac 访达侧边栏图标大小必须通过“系统设置→通用→边栏图标大小”来调整,选择“小”“中”或“大”后会立即生效,并统一影响所有 Finder 访达窗口的侧边栏图标与文字显示,无需重启应用。在 Mac 上打开访达后,如果觉得左侧边栏图标太小,不仅查看起来吃力,点击操作也不够方便,那么需要调整的并不是访

Mac触控板三指点击弹窗怎么关闭设置方法
系统平台 · 2026-08-13

Mac触控板三指点击弹窗怎么关闭设置方法

想关闭 Mac 上的三指轻点查词功能,其实操作很简单:打开“系统设置”→“触控板”→“光标与点按”,取消“查询与数据检测器”的勾选即可;你也可以直接在系统设置中搜索这个选项,然后关闭总开关。关闭后,快捷键 Control+Command+D 以及右键菜单中的“查找定义”通常也会一并停用。如果你也想把

Mac关闭专注模式过滤的方法
系统平台 · 2026-08-13

Mac关闭专注模式过滤的方法

必须手动移除 Safari 标签页组过滤条件,才能真正停用限制,而不是直接关闭专注模式本身;具体操作是进入系统设置→专注模式→选择目标模式→在过滤条件中点击“⋯”→选择“移除”。如果你在 Mac 上为某个专注模式设置了 Safari 标签页组过滤,之后想要临时取消或长期关闭这项网页访问限制,让所有网

Mac系统数据占用40G如何降到10G
系统平台 · 2026-08-13

Mac系统数据占用40G如何降到10G

想把Mac里的“系统数据”从40GB压到10GB,关键不在于盲目删除文件,而在于把几类真正占空间的内容找准、清干净:先通过系统设置→通用→储存空间扫描并管理“系统数据”,优先处理缓存、日志以及Time Machine本地快照;然后手动清空或有针对性地清理~ Library Caches和微信等应用缓

Linux查看当前系统所有路由条目方法
系统平台 · 2026-08-13

Linux查看当前系统所有路由条目方法

ip route show 是查看 Linux IPv4 主路由表最可靠的方式,输出会包含目标网络、下一跳、出接口、协议来源以及 metric;如果要查看 IPv6 路由,需要使用 ip -6 route show;route 命令属于 net-tools 包,在精简系统中通常需要手动安装。直接执行