iostat指令介绍

文章目录

    • [1. 功能介绍](#1. 功能介绍)
    • [2. 语法介绍](#2. 语法介绍)
    • [3. 应用场景](#3. 应用场景)
    • [4. 示例分析](#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 可以看到用法如下:

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

相关选项介绍如下:

选项 功能描述 示例命令
-c 仅显示 CPU 统计信息(与 -d 互斥) iostat -c 1 5
-d 仅显示磁盘统计信息(与 -c 互斥) iostat -d sda
-x 输出扩展 I/O 详情(如 awaitsvctm iostat -x 1
-k/-m 以 KB/MB 为单位显示数据(默认块单位) iostat -k
-p 指定监控的磁盘分区(如 sda iostat -p sda 2
-t 添加时间戳(格式 HH:MM:SS iostat -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 突增:
    • 可能发生大规模数据读取(如数据库全表扫描)。需结合业务逻辑判断是否正常。
相关推荐
AlfredZhao14 小时前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3102 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒4 天前
TShark:Wireshark CLI 功能
linux
A小辣椒4 天前
TShark:基础知识
linux
AlfredZhao4 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao5 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334665 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪5 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql