iostat
(Input/Output Statistics) 是一个在 Linux/Unix 系统中非常重要的性能监控命令,它主要用来监控系统的磁盘 I/O (输入/输出) 活动情况和 CPU 的使用率。
简单来说,iostat
能帮你回答以下几个核心问题:
系统的磁盘现在忙不忙?
数据是正在被大量读取还是大量写入?
CPU 是否因为等待磁盘读写而空闲(即 I/O 等待)?
系统的整体 CPU 使用情况是怎样的?
这个命令通常包含在 sysstat
软件包中,如果你的系统中没有,需要先安装它 (例如 sudo apt-get install sysstat
或 sudo yum install sysstat
)。
iostat
提供的主要信息
当你运行 iostat
命令时,它通常会输出两部分报告:CPU 使用率和设备(磁盘)使用率。
1. CPU 使用率报告 (avg-cpu)
这部分显示了 CPU 时间花费在不同任务上的百分比:
%user
: CPU 在用户空间执行程序所占的百分比(例如运行应用程序)。
%nice
: 运行 nice 值调整过的用户进程所占的百分比。
%system
: CPU 在内核空间运行所占的百分比(例如处理系统调用)。
%iowait
: CPU 等待 I/O 操作完成的时间百分比。这个值非常关键,如果它很高,通常意味着磁盘 I/O 是系统的性能瓶颈。
%steal
: 在虚拟化环境中,被其他虚拟机“偷走”的 CPU 时间百分比。
%idle
: CPU 完全空闲的时间百分比。
2. 设备使用率报告 (Device)
这是 iostat
的核心功能,提供了每个磁盘或分区的详细 I/O 统计信息。使用 -x
选项可以获得更详细的扩展信息,非常有用。
关键指标包括:
Device
: 设备名称(例如 sda
, nvme0n1
)。
r/s
和 w/s
: 每秒的读/写请求次数 (Read/Write per second)。
rkB/s
和 wkB/s
: 每秒读取/写入的数据量,单位是 KB (Kilobytes per second)。
await
: 每个 I/O 请求的平均处理时间(包括在队列中等待的时间和设备处理的时间),单位是毫秒。这个值可以直观地反映磁盘响应速度。
%util
: 设备处理 I/O 的时间百分比,即磁盘的繁忙程度。如果这个值接近 100%,说明磁盘已经饱和或接近饱和。
主要用途
诊断性能瓶颈:当感觉系统响应缓慢时,首先查看 %iowait
和磁盘的 %util
。如果这两个值都很高,说明瓶颈很可能在磁盘 I/O 上,而不是 CPU 计算能力不足。
监控磁盘负载:实时查看各个磁盘的读写情况,了解哪些磁盘分区最繁忙。
评估系统健康度:通过定期观察 await
和 r/s
, w/s
,可以判断磁盘性能是否下降,或者是否有异常的读写操作。
常用命令示例
iostat
: 显示自系统启动以来的平均统计信息(一次性报告)。
iostat 2 5
: 每 2 秒刷新一次数据,总共显示 5 次。这是最常用的动态监控方式。
iostat -d 2
: 只显示设备(磁盘)信息,每 2 秒刷新一次。
iostat -x 2
: 显示更详细的扩展统计信息,每 2 秒刷新一次。强烈推荐使用 -x
选项,因为它提供了 await
和 %util
等更具洞察力的指标。
iostat -c 2
: 只显示 CPU 信息,每 2 秒刷新一次。
iostat -xk 2
: 以 KB 为单位显示扩展统计信息,每 2 秒刷新一次。
总而言之,iostat
是系统管理员和开发者工具箱中一个不可或缺的、用于快速分析和定位系统 I/O 性能问题的利器。
暂无评论内容