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

iostat指令介绍

文章目录

    • 1. 功能介绍
    • 2. 语法介绍
    • 3. 应用场景
    • 4. 示例分析

1. 功能介绍

iostat (input/output statistics),是 Linux/Unix 系统中用于监控 CPU 使用率磁盘 I/O 性能的核心工具,可实时展示设备负载、吞吐量、队列状态等关键指标。

可以使用 man iostat查看详细介绍。

  • 核心监控维度

    • CPU 使用率:用户态(%user)、内核态(%system)、空闲(%idle)及 I/O 等待时间(%iowait)。
    • 磁盘 I/O:每秒读写请求数(tps)、数据量(kB_read/s/kB_wrtn/s)。
  • 数据模式

    首次报告:第一次iostat指令指示了系统启动以来的累计数据(需注意可能包含历史干扰)。
    持续监控:通过 iostat 间隔秒数 次数(如 iostat 2 5)动态刷新数据。

2. 语法介绍

使用 help 可以看到用法如下:

-sh-4.4$ iostat --help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]

相关选项介绍如下:

选项功能描述示例命令
-c仅显示 CPU 统计信息(与 -d 互斥)iostat -c 1 5
-d仅显示磁盘统计信息(与 -c 互斥)iostat -d sda
-x输出扩展 I/O 详情(如 awaitsvctmiostat -x 1
-k/-m以 KB/MB 为单位显示数据(默认块单位)iostat -k
-p指定监控的磁盘分区(如 sdaiostat -p sda 2
-t添加时间戳(格式 HH:MM:SSiostat -t
-z跳过零 I/O 活动设备,仅显示活跃设备iostat -z
  • -x 扩展IO详细介绍

    • iostat -x 的输出分为两部分:CPU 统计信息(默认显示,可通过 -d 隐藏)和磁盘设备统计信息。以下重点解析磁盘部分的扩展字段(以设备 sda 为例):

      字段含义
      Device磁盘设备名称(如 sdanvme0n1)。
      r/s每秒完成的读请求数(实际发送到磁盘的读操作数)。
      w/s每秒完成的写请求数。
      rkB/s每秒读千字节数(需结合 -k 选项,或通过 rsec/s * 512 / 1024 计算)。
      wkB/s每秒写千字节数。
      rrqm/s每秒合并的读请求数(内核将相邻的读请求合并以提高效率)。
      wrqm/s每秒合并的写请求数。
      %rrqm在发送到设备之前合并在一起的读请求的百分比。
      %wrqm在发送到设备之前,写请求合并在一起的百分比。
      r_await发送到要服务的设备的读请求的平均时间(以毫秒为单位)。这包括队列中请求所花费的时间和为它们服务所花费的时间。
      w_await发送到要服务的设备的写请求的平均时间(以毫秒为单位)。这包括队列中请求所花费的时间和服务所花费的时间。
      aqu-sz平均等待处理的 IO 请求队列长度(值越高表示 IO 队列积压越严重)。老版本是 avgqu-sz
      rareq-sz发送到设备的读请求的平均大小(单位为千字节)。
      wareq-sz发送给设备的写请求的平均大小(单位为千字节)。
      svctm平均每个 IO 请求的设备处理时间(不包括队列等待时间),单位:毫秒。
      %util磁盘设备的利用率(即磁盘忙于处理 IO 请求的时间百分比,接近 100% 表示磁盘饱和)。

3. 应用场景

  • 性能瓶颈分析

    • CPU 瓶颈
      • %iowait >20% 表示 I/O 等待时间长,可能磁盘成为瓶颈。
      • %user + %sys >70% 提示 CPU 处理能力不足,需优化代码或扩容。
    • 磁盘瓶颈(iostat -x):
      • 高 %util(>80%):设备接近满载,需优化存储或升级硬件。
      • 高 await 与低 svctm:I/O 队列堆积,检查并发读写。
  • 数据库与存储调优

    • 数据库负载
      • 监控事务日志盘(如 /dev/sdb)的 tpsrkB/s,确保读写均衡。
  • 存储设备评估

    • SSD 与 HDD 对比
      • SSD 的 svctm 通常 <1ms,若 HDD 的 svctm 持续 >10ms,建议升级存储介质。

4. 示例分析

  • 高 %util 但低吞吐量:
    • 可能频繁小文件随机读写,导致磁盘频繁寻道。优化方法:合并 I/O 请求或改用 SSD。
  • await 远高于 svctm:
    • 表明 I/O 队列积压严重。需检查 avgqu-sz,若队列过长,需降低并发或提升磁盘性能。
  • rkB/s 突增:
    • 可能发生大规模数据读取(如数据库全表扫描)。需结合业务逻辑判断是否正常。
http://www.xdnf.cn/news/1117.html

相关文章:

  • 最美丽的区间
  • Pycharm(十五)面向对象程序设计基础
  • AI数字人:品牌营销的新宠与增长密码(6/10)
  • 中间系统-基础
  • 【Redis】字符串类型List 常用命令详解
  • Qt进阶开发:鼠标及键盘事件
  • ​CTGCache ​CTG-Cache TeleDB
  • 前端开发核心知识详解:Vue2、JavaScript 与 CSS
  • Anaconda3使用conda进行包管理
  • 微信小程序 van-dropdown-menu
  • 基于OpenCV的骨骼手势识别分析系统
  • 在任意路径下简单开启jupyter notebook
  • C++ / 引用 | 类
  • sofia-sip 向上注册不成功以及解决办法
  • 用c语言实现——一个带头节点的链队列,支持用户输入交互界面、初始化、入队、出队、查找、判空判满、显示队列、遍历计算长度等功能
  • Oracle--存储过程
  • mybatis mapper.xml中使用枚举
  • Mysql 读写分离(3)之 schema.xml基本配置
  • 简化K8S部署流程:通过Apisix实现蓝绿发布策略详解(上)
  • 物联网 (IoT) 安全简介
  • 《开源大模型选型全攻略:开启智能应用新征程》
  • Ubuntu 上安装 Conda
  • Spark-Streaming核心编程
  • 深度剖析神经网络:从基础原理到面试要点(二)
  • 游戏引擎学习第239天:通过 OpenGL 渲染游戏
  • 三餐四季、灯火阑珊
  • Oracle DBA 高效运维指南:高频实用 SQL 大全
  • 极狐GitLab 项目功能和权限解读
  • 大数据学习(112)-HIVE中的窗口函数
  • Cursor这类编程Agent软件的模型架构与工作流程