iostat命令详解

iostat(Input/Output Statistics)是 Linux 系统中用于监控系统磁盘和 CPU 使用情况的工具。它可以报告设备的 I/O 负载和 CPU 使用率,主要用于分析系统性能瓶颈,尤其是磁盘 I/O 相关的性能问题。


1. 基本语法

iostat [选项] [时间间隔] [报告次数]

2. 常用选项

  • -c: 仅显示 CPU 使用率。
  • -d: 仅显示磁盘 I/O 统计(默认显示 CPU 和磁盘)。
  • -x: 显示扩展统计信息(更详细的 I/O 指标)。
  • -m: 以 MB/s 为单位显示读写速度(默认单位为 KB/s)。
  • -p [设备名]: 显示指定磁盘的详细信息。
  • -t: 显示时间戳(便于记录监控数据的时间点)。
  • -N: 显示 LVM 逻辑卷名称而非设备名。
  • -h: 友好格式输出(例如,自动转换单位)。

3. 输出字段详解

启用 iostat -x 的扩展输出时会显示以下关键指标:

CPU 统计(默认显示)

  • %user: 用户态程序占用 CPU 比例。
  • %nice: 高优先级(nice 调整过)的用户进程占用的 CPU 比例。
  • %system: 内核态程序占用 CPU 比例。
  • %iowait: CPU 等待 I/O 操作完成的时间比例(高可能表示 I/O 瓶颈)。
  • %steal: 在虚拟化环境中,被其他虚拟机占用的 CPU 时间。
  • %idle: CPU 空闲时间比例。

磁盘 I/O 统计

  • Device: 磁盘名称(如 sdanvme0n1)。
  • rrqm/s: 每秒合并的读取请求数量(合并 I/O 请求优化性能)。
  • wrqm/s: 每秒合并的写入请求数量。
  • r/sw/s: 每秒实际完成的读/写请求次数。
  • rkB/swkB/s: 每秒读/写的数据量(单位 KB,使用 -m 后为 MB)。
  • avgrq-sz: 平均每个请求的数据大小(单位为扇区,1 扇区 = 512B)。
  • avgqu-sz: 平均等待队列长度(队列越长,I/O 越繁忙)。
  • await: 平均每个 I/O 请求的等待时间(包括排队和服务时间,单位毫秒)。
  • r_awaitw_await: 读取和写入的单独等待时间。
  • svctm: 磁盘处理 I/O 请求的平均服务时间(单位毫秒,实际可能有误差)。
  • %util: 磁盘 I/O 使用率(接近 100% 表示磁盘满负荷,可能存在瓶颈)。

4. 实际应用示例

例 1:实时监控所有磁盘的 I/O

iostat -dx 2 5
  • 每隔 2 秒输出一次扩展 I/O 统计,共输出 5 次。

例 2:查看指定磁盘的详细信息

iostat -x -p sda 1
  • 监控磁盘 sda 的扩展统计,每秒刷新一次。

例 3:以 MB 为单位显示磁盘吞吐量

iostat -d -m 1
  • 仅显示磁盘统计,数据单位为 MB/s。

例 4:组合查看 CPU 和磁盘

iostat -c -d -x -t 2
  • 显示 CPU、磁盘的扩展信息,并带时间戳,每隔 2 秒输出一次。


5. 关键指标分析

  • %iowait:CPU 在等待 I/O 操作,可能是磁盘速度不足或 I/O 请求过多。
  • avgqu-sz > 0:表明 I/O 队列中有堆积的请求。
  • await 远高于 svctm:表示请求在队列中等待时间较长,可能是磁盘忙碌或负载不均。
  • %util 持续接近 100%:磁盘已达到性能极限,需优化或升级硬件(如更换 SSD)。

6. 注意事项

  • 需要 rootsudo 权限才能获取完整的设备信息。
  • iostat 的统计值是基于时间间隔的均值,建议结合具体场景分析。
  • 不同 Linux 发行版的 iostat 输出可能略有差异。
  • 对于更复杂的分析,可结合 vmstatiotopsar 等工具。

如果需要进一步分析磁盘性能,可以查看磁盘的 fstab 挂载参数、文件系统类型(如 ext4/XFS)以及 RAID/SSD 配置。

posted @ 2025-05-23 09:22  玛卡巴卡糖  阅读(675)  评论(0)    收藏  举报