当前位置:首页 > 文章列表 > 文章 > linux > Linux iostat await 和 util 怎么看:区分磁盘延迟、队列堆积与设备忙碌

Linux iostat await 和 util 怎么看:区分磁盘延迟、队列堆积与设备忙碌

来源:17golang原创 2026-08-28 03:55:10 0浏览 收藏

磁盘告警里最容易被误读的是 %util:看到它接近 100%,就直接下结论说“磁盘满了”。实际排查 Linux I/O 时,await、aqu-sz 和 %util 必须放在同一个采样窗口里看,才能分清请求是在排队、设备服务慢,还是并行设备的统计口径让利用率看起来很高。

先用 iostat -x -y 2 6 取得连续样本,再把 await、aqu-sz、%util 与读写方向放在一起判断;单看一列,尤其是 %util,不足以证明设备已经到达性能上限。

要点速览
  • await 包含排队时间和设备实际服务时间,适合观察请求端到端等待。
  • aqu-sz 持续升高而吞吐没有同步增加,通常要优先检查队列堆积。
  • %util 接近 100% 对串行设备更有警示意义,对并行 SSD 或 RAID 不能单独当作饱和证据。
  • 首次历史报告容易混入开机以来的平均值,使用 -y 后再按固定间隔复测。

先把 iostat 的首次报告排除掉

iostat 默认会先输出一段从系统启动到当前时刻的累计统计。服务器刚经历过批处理或备份时,这一行可能和眼前的故障窗口完全不是一回事。排查现场先固定设备、间隔和样本数:

iostat -x -y 2 6

-x 展开设备级指标,-y 跳过第一份历史报告,2 6 表示每 2 秒采样一次,共输出 6 份报告。先观察第二到第六份是否稳定,再谈某个数字是不是异常。样本期间最好不要同时重启服务或手工制造大量 I/O,否则你看到的是操作本身的影响。

Linux iostat -x 采样窗口中同时读取 await、aqu-sz 和 util 的设备证据

await 高,究竟高在排队还是高在服务时间

await 是 I/O 请求从发出到完成的平均时间,包含请求在队列里等待的时间,也包含设备真正处理请求的时间。它不是“磁盘转速”的别名,也不能直接当成某个固定硬件的健康阈值。

排查时至少把它和 aqu-sz、读写方向、吞吐一起看:

读数组合优先假设下一步
await 高、aqu-sz 也升高请求在设备前排队确认是谁在产生读写,检查队列是否持续增长
await 高、aqu-sz 很低单个请求服务耗时高,或样本量太小延长采样窗口,区分读写方向并复测
await 低、吞吐正常暂未看到明显设备等待不要仅凭高 %util 判定饱和

这里别急着把参数改成“更大的队列”。队列变长可能只是把等待藏起来,应用侧的请求延迟反而更难解释。先用 pidstat -d 2 6 或业务日志找出读写来源,再回到设备行核对。

%util 接近 100% 时,先确认设备是不是并行处理

%util 表示在统计时间里,设备有 I/O 请求处于活动状态的比例。对一次只能服务有限并发请求的设备,它接近 100% 往往值得警惕;但现代 SSD、NVMe 或 RAID 可以同时处理多个请求,此时设备持续忙碌不等于已经达到吞吐或 IOPS 极限。

更稳妥的判断是看趋势:%util 很高、await 持续上升、aqu-sz 同时堆积,且业务延迟同步变差,才更像设备或下游路径正在成为瓶颈。如果 %util 高但 await 平稳、队列接近零,先检查业务负载类型、设备并行度和采样窗口,不要直接扩容或替换磁盘。

Linux iostat 通过 await、aqu-sz、util 和并行设备判断磁盘瓶颈的决策路径

用固定采样结果做一次反向验证

假设某次采样显示 await=18ms、aqu-sz=0.20、%util=98%。这个组合只能说明设备在窗口内几乎一直有请求,但队列并不长,不能单独证明“磁盘已经跑满”。如果下一轮业务高峰中 await 变成 80ms、aqu-sz 逐步增大,且读写吞吐接近不再增长,证据才开始指向排队和服务能力不足。

复测时保持三件事不变:同一个设备名、同一个采样间隔、同一个业务负载。若设备被 LVM、容器或虚拟化层包住,还要把上层设备和底层块设备放在同一时间段对照,避免只看其中一层。

常见问题:iostat 三列读数怎么避免误判

为什么第一次 iostat 输出总是和后面不同?

第一次报告可能覆盖系统启动以来的累计区间,历史负载会稀释或放大当前现象。使用 -y 跳过它,再用固定间隔采样。

await 高是不是一定要换磁盘?

不是。先确认请求是否排队、读写方向是否变化,以及高等待是否和业务延迟同步出现。样本太少或只发生在单一请求类型时,不能直接推导硬件结论。

%util 为什么高了但 aqu-sz 还是很低?

设备可能一直有请求但并没有形成长队列,或者设备具备并行处理能力。继续观察 await、吞吐和业务延迟,再判断是否接近真正上限。

把判断落到三列联读

日常值班可以把结论压缩成一句话:先用 await 看请求等了多久,再用 aqu-sz 看是否在排队,最后用 %util 判断设备是否持续有活跃请求;遇到 SSD、NVMe 或 RAID,再把并行处理能力和业务延迟补进证据链。这样得到的判断可复测,也比“util 100% 所以磁盘坏了”更接近真实现场。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go io.NewSectionReader 怎么读取文件切片:Offset、Seek 与越界返回Go io.NewSectionReader 怎么读取文件切片:Offset、Seek 与越界返回
上一篇
Go io.NewSectionReader 怎么读取文件切片:Offset、Seek 与越界返回
Web Components 的 customElements.whenDefined 怎么处理组件先渲染后注册:升级时机与失败分支
下一篇
Web Components 的 customElements.whenDefined 怎么处理组件先渲染后注册:升级时机与失败分支
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    444次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    516次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    529次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    477次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    300次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码