当前位置: 首页 > news >正文

iostat 系统IO监控命令学习

一、iostat 命令描述

“iostat”命令用于监测系统输入/输出设备的负载情况,其通过观察设备处于活跃状态的时间与平均传输速率之间的关系来实现这一目的。该命令会生成报告,这些报告可用于调整系统配置,以更好地平衡物理磁盘之间的输入/输出负载。
iostat 命令生成的第一份报告会提供有关系统自启动以来的时间的统计信息(除非使用了 -y 选项)。在这种情况下,第一份报告将被省略。每次后续报告都会涵盖自上一次报告以来的时间。每次运行 iostat 命令时,都会报告所有统计信息。报告包括一个 CPU 标题行,随后是一行 CPU 统计信息。在多处理器系统中,CPU 统计信息是按系统范围计算的,即所有处理器的平均值。会显示一个设备标题行,随后是每个配置设备的一行统计信息。
“间隔参数”指定了每次报告之间的时间间隔(以秒为单位)。而“计数参数”则可以与“间隔参数”一同设定。如果指定了“计数参数”,其值将决定在每隔“间隔时间”秒内生成的报告数量。如果
如果未指定计数参数,则间隔参数一经设定,iostat 命令就会持续生成报告。

安装: yum -y install sysstat

二、iostat 常用参数介绍

参数作用与说明典型用法示例
-c仅显示 CPU 统计(%user %nice %system %iowait %idle)iostat -c 1 3
-d仅显示磁盘/设备统计iostat -d 1
-x扩展模式:额外给出 await svctm %util avgqu-sz 等关键指标,定位 I/O 瓶颈必用iostat -x 1
-k/-m以 KiB/s 或 MiB/s 为单位显示吞吐量(默认是 block/s)iostat -dk 1
-p指定某个设备或分区,避免被无关设备刷屏iostat -p sda 1
-t输出时间戳,方便做日志或趋势对比iostat -xt 1 10 > io.log
-y跳过第一次采样(避免系统启动平均值干扰)iostat -xy 1
-z隐藏无活动的设备,输出更干净iostat -dz 1

三、实例:

实例1. 输出所有设置负载情况

如下可以看出我只有一块设置 nvme0n1

# iostat
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain)       08/04/2025      _x86_64_        (8 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.45    0.00    1.36    2.74    0.00   95.44Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nvme0n1         676.62     11660.61     11867.46  159227855  162052488
scd0              0.00         0.08         0.00       1041          0

cpu属性值说明:

  • %user:正常优先级用户进程占 CPU 的时间
  • %nice:被 nice 降过优先级的用户进程占 CPU 的时间
  • %system:内核态(系统调用、中断等)占 CPU 的时间
  • %iowait:CPU 空闲但等待 I/O 完成的时间
  • %steal:被虚拟机 Hypervisor 或其他 VM 偷走的 CPU 时间
  • %idle:CPU 真正空闲、无任务可运行的时间

disk属性值说明:

  • tps:每秒传输(I/O)次数
  • kB_read/s:每秒从设备读数据量
  • kB_wrtn/s:每秒向设备写数据量
  • kB_read:启动至今累计读量
  • kB_wrtn:启动至今累计写量

实例2. 定时显示所有信息

每隔两秒显示,总共显示3次

# iostat 2 3
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain)       08/04/2025      _x86_64_        (8 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.44    0.00    1.32    2.65    0.00   95.59Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nvme0n1         654.28     11275.47     11475.50  159227963  162052618
scd0              0.00         0.07         0.00       1041          0avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.06    0.00    0.31    0.00    0.00   99.62Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nvme0n1           0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.06    0.00    0.25    0.00    0.00   99.69Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nvme0n1           0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0

实例3. 查看TPS和吞吐量

查看nvme0n1 磁盘的吞吐量信息,第一次tps显示644.79 是系统启动以来(或工具启动以来)的累计统计”,从第二次开始才是“每 1 秒的实时增量”。

# iostat -d nvme0n1 -m 1 3
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain)       08/04/2025      _x86_64_        (8 CPU)Device             tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
nvme0n1         644.79        10.85        11.04     155496     158254Device             tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
nvme0n1           0.00         0.00         0.00          0          0Device             tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
nvme0n1           0.00         0.00         0.00          0          0

实例4. 查看设备使用率(%util)和响应时间(await)

# iostat -d nvme0n1 -x -k 1 1
Linux 4.18.0-348.7.1.el8_5.x86_64 (localhost.localdomain)       08/04/2025      _x86_64_        (8 CPU)Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
nvme0n1        293.84  341.03  10940.83  11135.15     0.00     0.21   0.00   0.06    3.06    4.47   2.42    37.23    32.65   0.09   5.59
  • r/s:每秒读请求个数(读 IOPS)
  • w/s:每秒写请求个数(写 IOPS)
  • rMB/s:每秒读取的数据量(读吞吐量)
  • wMB/s:每秒写入的数据量(写吞吐量)
  • rrqm/s:每秒合并的读请求(合并后减少实际磁盘读)
  • wrqm/s:每秒合并的写请求(合并后减少实际磁盘写)
  • %rrqm:读请求合并比例(越高越省磁盘)
  • %wrqm:写请求合并比例(越高越省磁盘)
  • r_await:读请求平均响应时间(从提交到完成,单位毫秒)
  • w_await:写请求平均响应时间(从提交到完成,单位毫秒)
  • aqu-sz:平均队列长度
  • rareq-sz:(等待 + 正在服务的 I/O 数)
  • wareq-sz:平均读请求大小(KB/请求)
  • svctm:平均写请求大小(KB/请求)
  • %util:设备繁忙度(100% 表示磁盘饱和)
http://www.lryc.cn/news/609600.html

相关文章:

  • 二叉树的概念以及二叉树的分类,添加,删除
  • OpenCV计算机视觉实战(18)——视频处理详解
  • Postman:配置环境变量
  • 【Unity3D实例-功能-镜头】第三人称视觉
  • VUE2 学习笔记17 路由
  • 算法训练营DAY50 第十一章:图论part01
  • 代码随想录day55图论5
  • [spring-cloud: 负载均衡]-源码分析
  • 软件设计 VS 软件需求:了解成功软件开发外包的关键差异
  • 【数据结构入门】链表
  • Centos7.9安装Oracle11.2.0.1版本问题处理
  • Python实现Word转PDF全攻略:从入门到实战
  • 电商直播流量爆发式增长,华为云分布式流量治理与算力调度服务的应用场景剖析
  • windows内核研究(软件调试-软件断点)
  • 房屋租赁小程序租房小程序房产信息发布系统房屋租赁微信小程序源码
  • 架构师面试(三十九):微服务重构单体应用
  • 剧本杀小程序系统开发:开启沉浸式推理社交新纪元
  • 力扣1124:表现良好的最长时间段
  • 【Java】使用FreeMarker来实现Word自定义导出
  • leetcode-sql-3497分析订阅转化
  • 旧物回收小程序:开启绿色生活新篇章
  • Array容器学习
  • LeetCode 132:分割回文串 II
  • 【YOLO系列】YOLOv12详解:模型结构、损失函数、训练方法及代码实现
  • 关于Npm和Nvm的用法
  • Linux 环境 libpq加载异常导致psql 连接 PostgreSQL 库失败失败案例
  • uniapp开发微信小程序textarea在ios下有默认内边距的问题(textarea兼容问题)
  • 如何给Word和WPS文档添加密码或取消密码
  • Ethereum:拥抱开源,OpenZeppelin 未来的两大基石 Relayers 与 Monitor
  • Jwts用于创建和验证 ​​JSON Web Token(JWT)​​ 的开源库详解