sysstat 性能分析之iostat 命令详解

发布时间:2026/7/22 22:39:52

sysstat 性能分析之iostat 命令详解
1. iostat 命令查看 IO 信息全面指南https://m.runoob.com/linux/linux-comm-iostat.html在 Linux 系统性能调优和日常运维中磁盘 I/O输入/输出往往是系统瓶颈的高发地带。程序响应慢、数据库查询延迟高很多情况下都与磁盘读写性能密切相关。iostatInput/Output Statistics正是 Linux 系统管理员和开发者手中用于监控系统磁盘 I/O 活动的重要工具。本文将带你从零开始系统掌握 iostat 命令的核心用法从安装到输出解读再到实战案例让你能够快速定位 I/O 瓶颈问题。2. 什么是 iostatiostat是 Linux 系统自带的系统状态监控工具属于sysstat工具集的一部分。它主要提供三方面的数据CPU 使用率统计用户态、系统态、空闲等指标磁盘 I/O 统计每块磁盘的读写速率、I/O 操作次数、平均等待时间等分区设备级别的 I/O 详情细化到每个块设备。通过 iostat你可以直观地判断当前系统是“CPU 密集型”还是“I/O 密集型”从而有针对性地优化。3. 安装 iostatiostat 通常包含在sysstat包中不同发行版的安装命令稍有不同# Debian / Ubuntusudoaptupdatesudoaptinstallsysstat# CentOS / RHEL / Fedorasudoyuminstallsysstat# 或sudodnfinstallsysstat安装完成后验证是否可用iostat-V4. 基本用法4.1 最简单的用法直接在终端输入iostat不加任何参数iostat输出会包含一份自系统启动以来的汇总数据包括 CPU 和所有磁盘设备的平均 I/O 指标。4.2 周期性采样生产环境中更常用的是持续监控模式。通过两个数字参数控制iostat[采样间隔(秒)][采样次数]示例每秒采样一次共采 3 次iostat13执行后第一份报告仍是启动以来的累积数据后续每份报告是采样间隔内的增量数据。这正是实时监控的关键。用法详解四、输出结果解读4.1 CPU统计部分avg-cpu: %user %nice %system %iowait %steal %idle5.320.001.060.250.0093.37%user用户级别(应用程序)的CPU使用率%nice优先级调整过的进程的CPU使用率%system系统级别(内核)的CPU使用率%iowaitCPU等待I/O操作完成的时间百分比%steal虚拟环境中的被偷走时间%idleCPU空闲时间百分比4.2 磁盘统计部分基础Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda1.0212.345.671234567567890tps每秒传输次数(transfers per second)kB_read/s每秒读取的数据量(KB)kB_wrtn/s每秒写入的数据量(KB)kB_read读取的总数据量(KB)kB_wrtn写入的总数据量(KB)4.3 扩展统计信息-x选项Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda0.000.501.000.5012.004.0021.330.0210.008.0014.006.000.90rrqm/s每秒合并的读请求数wrqm/s每秒合并的写请求数r/s每秒完成的读I/O次数w/s每秒完成的写I/O次数rkB/s每秒读取的KB数wkB/s每秒写入的KB数avgrq-sz平均每次I/O操作的数据大小(扇区)avgqu-sz平均I/O队列长度await平均每次I/O操作的等待时间(毫秒)r_await读操作的平均等待时间(毫秒)w_await写操作的平均等待时间(毫秒)svctm平均每次I/O操作的服务时间(毫秒)%util设备带宽利用率百分比5. 核心输出指标详解执行 iostat 后输出主要分为三部分5.1 CPU 指标参数含义%user用户态程序占用 CPU 的百分比%nice低优先级程序占用 CPU 的百分比%system内核态占用 CPU 的百分比%iowaitCPU 等待 I/O 完成的时间占比重点关注%steal虚拟机等待宿主机 CPU 的占比虚拟化环境关注%idleCPU 完全空闲的百分比关键判断%iowait持续偏高如 30%通常说明磁盘 I/O 存在瓶颈。5.2 磁盘设备指标参数含义tps每秒传输次数Transfers Per Second即每秒发出的 I/O 请求数kB_read/s每秒从设备读取的数据量KBkB_wrtn/s每秒向设备写入的数据量KBkB_read自系统启动以来读取的总量KBkB_wrtn自系统启动以来写入的总量KBiostat 数据分析解读先说明字段含义tps每秒 I/O 请求次数读写合并kB_read/s每秒读 KBkB_wrtn/s每秒写 KBkB_dscd/s每秒丢弃 / 刷新 KB常见 SSD、块设备 discard 操作末尾三列累计总量原始数据plaintextDevice tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd sda0.000.170.000.008283700sdb0.000.020.000.001178100sdc0.000.000.000.00222840sdd60.04604.82529.393149.352866406092508947761492564236重点分析 sdd业务盘负载集中在 sddsda/sdb/sdc 几乎无压力实时负载tps ≈ 60 IOPS读带宽604.82 KB/s ≈ 0.59 MB/s写带宽529.39 KB/s ≈ 0.52 MB/sdiscard 速率极高3149.35 KB/s⚠️ 关键现象discard (fstrim) 流量远大于正常读写换算参考读604.82 / 1024 ≈ 0.59 MB/s写529.39 / 1024 ≈ 0.52 MB/sdiscard3149.35 / 1024 ≈ 3.08 MB/s6. 高级用法与常用参数6.1 扩展报告模式-x这是排查问题时最常用的参数会展示更详细的 I/O 指标iostat-x12扩展指标详解参数含义r/s每秒完成的读请求数w/s每秒完成的写请求数rkB/s/wkB/s每秒读写数据量KBawait每个 I/O 请求的平均等待时间毫秒包括排队和执行时间重点关注r_await/w_await分别统计读、写的平均等待时间svctm平均服务时间已弃用不建议参考%util设备带宽利用率即 I/O 请求占用时间百分比接近 100%说明设备已饱和aqu-sz平均队列长度wareq-sz/rareq-sz平均读写请求大小扇区瓶颈判断口诀await高 → I/O 响应慢%util高 → 设备接近饱和队列长度 1 → 请求堆积。ostat命令使用格式iostat -option interval countiostat重要的选项-c 显示CPU使用情况-d 显示磁盘使用情况-k 以 KB 为单位显示-m 以 MB为单位显示-p[磁盘] 显示磁盘和分区的情况-x 显示详细信息-V 显示版本信息6.2 以 MB 为单位显示-m默认以 KB 为单位加上-m可以更直观地看大流量场景iostat-mx126.3 只显示指定磁盘-p只监控特定设备如sdaiostat-x12sda6.4 查看 NFS 挂载点iostat-n6.5 精确时间戳-t在每份报告前加上时间戳便于事后分析iostat-t137. 实战案例分析案例一判断系统 I/O 是否繁忙执行以下命令持续观察iostat-x1若%iowait 20%且某磁盘%util接近 100%则说明该磁盘 I/O 已饱和。进一步对比r/s和w/s判断瓶颈在该盘还是写。案例二定位慢响应磁盘iostat-x1关注await列如果某块盘的await远超其他盘例如 sdb 的await是 200ms其他盘只有 5ms那么这块盘就是拖慢系统的“元凶”。可能原因包括磁盘故障、RAID 重建、坏道等。案例三评估数据库读写负载部署 MySQL/PostgreSQL 的服务器上数据库文件的读写模式可直接用 iostat 观察iostat-mx110nvme0n1通过rkB/s与wkB/s的比例判断当前数据库是读多写少OLAP 分析型还是读写均衡OLTP 事务型结合rareq-sz和wareq-sz判断 I/O 请求是否过于碎片化。五、实用示例分析5.1 监控特定磁盘实例# 监控sda磁盘每2秒刷新共显示3次iostat-d-xsda235.2综合监控CPU和磁盘 实例# 监控CPU和磁盘每5秒刷新持续显示iostat-c-d-x-t55.3以MB为单位显示 实例# 以MB为单位显示磁盘统计信息iostat-d-m5.4监控所有分区 实例# 监控所有分区包括LVMiostat-pALL六、性能指标解读与优化建议6.1 关键性能指标%util设备利用率80% 表示设备接近饱和持续100% 表示设备已成为瓶颈awaitI/O等待时间正常情况下应 10ms50ms 表示可能存在性能问题avgqu-sz队列长度1 表示设备可能过载6.2 常见问题诊断问题1高%util但低吞吐量可能原因随机I/O过多解决方案优化应用I/O模式考虑使用SSD问题2高await但低%util可能原因控制器或总线瓶颈解决方案检查HBA卡或存储控制器问题3rkB/s或wkB/s异常高可能原因应用大量读写解决方案优化应用或增加缓存七、与其他工具配合使用7.1 结合vmstat实例## 同时监控内存和I/Ovmstat15iostat-x157.2 结合sar实例# 查看历史I/O数据sar-d7.3结合iotop实例# 找出具体的高I/O进程iotop八、总结与最佳实践8.1 使用建议生产环境监控时建议使用-x选项获取详细数据长期监控应结合sar收集历史数据分析性能问题时应同时关注CPU和I/O数据比较不同时间段的统计数据更有意义8.2 常用命令组合实例# 综合监控命令iostat-c-d-x-t-m5# 只监控磁盘扩展信息iostat-d-x2# 监控特定分区iostat-psda1-x1108. 与其他工具的配合使用iostat 只是系统监控工具链中的一员完整的 I/O 分析建议配合iotop按进程、线程展示实时 I/O直接定位是哪个程序在大量读写vmstat综合展示内存、CPU、进程、I/O 全景dstat色彩化、可定制的系统资源监控替代 vmstat/iostat/netstat 的通用工具blktrace btrace深入块设备层分析每个 I/O 操作的耗时。典型排查流程先用iostat -x 1确认瓶颈在哪块盘再用iotop定位具体进程最后用blktrace分析请求原因。9. 常见问题 FAQQ1为什么 iostat 第一份数据看起来和后面不一样第一份是系统启动以来的累积平均值后续每份是采样间隔内的增量。建议跳过第一份从第二份开始看。Q2%util达到 100% 就一定是瓶颈吗不一定。对于 SSD、NVMe 等支持并行 I/O 的设备%util可能接近 100% 但仍有处理能力。此时应更关注await和队列长度指标。Q3svctm为什么不建议使用iostat 的 man 手册明确指出该指标不准确且从 sysstat 较新版本中已计划移除。请改用await评估响应时间。Q4iostat 能监控网络 I/ONFS吗可以使用-n参数可以显示 NFS 文件系统的相关 I/O 统计信息。10. 总结iostat 是每一位 Linux 运维人员和后端开发者必备的 I/O 监控利器。总结一下最佳实践日常巡检定期执行iostat -x 1观察系统健康度性能排查以%iowait、await、%util三指标为切入点组合使用结合 iotop、vmstat 等工具形成完整的诊断链。掌握 iostat你就能在面对“系统怎么又卡了”时用数据说话快速定位真凶。

相关新闻

QtScrcpy终极指南:5个高效Android投屏控制技巧

QtScrcpy终极指南:5个高效Android投屏控制技巧

2026/7/22 22:39:52

QtScrcpy终极指南:5个高效Android投屏控制技巧 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy是一款强大的免费开源Android投屏控制软件,能够在Win…

Mysql并发DML锁等待的优化

Mysql并发DML锁等待的优化

2026/7/22 22:39:52

1、概述 ​ 在Mysql数据库中,慢SQL、长事务、没执行commit的DML操作,都有可能导致并发会话的阻塞,还可能发生锁等待报错。那么这一类的报错应该如何优化呢? 通常有三种方案可以考虑: 1)优化SQL性能&#xf…

国内首批!中关村科金通过中国信通院生成式引擎优化能力完备性专项测评

国内首批!中关村科金通过中国信通院生成式引擎优化能力完备性专项测评

2026/7/22 22:39:52

2026年7月10日,中国信息通信研究院在北京举办“GEO价值交付与场景应用创新研讨会”,正式发布国内首批生成式引擎优化(GEO)能力完备性专项测评结果。凭借领先的AI原生技术能力、完善的安全合规体系及成熟的得助GEO产品能力&#xf…

150、【Agent】【OpenCode】启动分析(IoC)

150、【Agent】【OpenCode】启动分析(IoC)

2026/7/22 23:39:55

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 标题 150、【Agent】【OpenCode】启动分析&am…

Kiro 读取并分析本地 IDEA 项目运行日志的完整方案

Kiro 读取并分析本地 IDEA 项目运行日志的完整方案

2026/7/22 23:39:55

Kiro 读取并分析本地 IDEA 项目运行日志的完整方案 一、场景说明 本地用 IntelliJ IDEA 运行项目时,报错信息和日志默认只输出在 IDEA 的 Run/Debug 控制台中。要让 Kiro 具备读取和分析这些日志的能力,核心思路是:让日志有一个 Kiro 能访问到…

Windows 11版本26100.8968,版本为24H2(构建版26100)和25H2(构建版26200)

Windows 11版本26100.8968,版本为24H2(构建版26100)和25H2(构建版26200)

2026/7/22 23:39:55

Windows 11版本26100.8968和26200.8968,适用于Windows 11的版本26100.8968,版本为24H2(构建版26100)和25H2(构建版26200)。 本次更新通过两个发布阶段开放:渐进式和普通版。渐进式推送会分阶段…

Jellium Desktop播放历史统计:了解你的媒体消费习惯

Jellium Desktop播放历史统计:了解你的媒体消费习惯

2026/7/22 23:39:55

Jellium Desktop播放历史统计:了解你的媒体消费习惯 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop是一款非官方的Jellyfin桌面客户端&am…

国产化边缘视觉方案对比:RK3588 vs X86工控 vs Jetson,工业视觉成本算力全分析

国产化边缘视觉方案对比:RK3588 vs X86工控 vs Jetson,工业视觉成本算力全分析

2026/7/22 23:39:55

国产化边缘视觉方案对比:RK3588 vs X86工控 vs Jetson,工业视觉成本算力全分析 关键词:RK3588、边缘计算、机器视觉、国产化替代、Jetson、X86工控机、AI质检、嵌入式NPU0. 前言 在工业机器视觉、智能质检、安防识别、AGV 视觉导航等场景中&a…

BirdNET-Go核心功能解析:本地AI模型如何实现高精度鸟类与蝙蝠识别

BirdNET-Go核心功能解析:本地AI模型如何实现高精度鸟类与蝙蝠识别

2026/7/22 23:29:54

BirdNET-Go核心功能解析:本地AI模型如何实现高精度鸟类与蝙蝠识别 【免费下载链接】birdnet-go Self-hosted realtime soundscape analyser for birds, bats and other wildlife. Multi-model local AI inference, runs 24/7 on a Raspberry Pi. 项目地址: https:…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

设计EDA 首席专家 12 维度 JD(HR 仅高管 / HRD 使用)

设计EDA 首席专家 12 维度 JD(HR 仅高管 / HRD 使用)

2026/7/22 0:08:09

定位:公司 EDA 技术最高负责人、技术天花板、战略级专家、流片总兜底人 属于P9/Fellow/ 首席科学家级,不做日常执行,管方向、管架构、管风险、管突破。1. 对标层级内部职级:P9 / 首席专家 / Fellow 外部对标:华为 20–…

费用率无法实时监控怎么办?费用率联动预算管理怎么实现?

费用率无法实时监控怎么办?费用率联动预算管理怎么实现?

2026/7/22 0:08:09

很多企业费用管控存在严重滞后性:日常差旅、招待、营销、人力费用持续发生,但费用率只能等到月末结账、营收数据出来后才能计算核对,月度中途费用超标、营收不达标导致的费用率失衡完全无法感知。等到月末发现整体费用率远超预算目标时&#…

设计EDA 研发总监 12 维度 JD(HR 内部仅高管层使用)

设计EDA 研发总监 12 维度 JD(HR 内部仅高管层使用)

2026/7/22 0:08:09

定位:公司 EDA / 设计平台最高管理岗,技术 管理 经营三重决策,对整体流片、效率、质量、成本、团队负最终责任1. 对标层级内部职级:M3 / P8 / 总监级 外部对标:华为 20 级、互联网 M2 / 总监、头部芯片 / EDA 公司研…