iostat 是一个用于监测系统输入输出设备和CPU使用情况的统计工具。它是大多数类Unix操作系统中的标准工具,包括Linux。iostat 可以显示关于硬盘、分区、NFS、光盘等的统计信息,以及CPU的使用情况。
iostat 命令通常用于检测磁盘I/O性能问题和CPU性能问题。通过分析iostat提供的数据,管理员可以了解系统中的哪些部分可能成为瓶颈,从而采取相应的优化措施。
在CentOS 7上安装iostat,我们可以使用yum包管理器,因为iostat包含在sysstat包中。请按照以下步骤操作:
- 打开终端。
- 输入以下命令来安装
sysstat包:
sudo yum install sysstat
- 如果系统提示确认安装,请按
y键。 - 安装完成后,可以通过输入
iostat来运行它。
请确保用户账户有使用sudo的权限
iostat命令提供了多种参数,可以帮助我们根据需要定制输出。以下是一些常用的参数:
-c:仅显示CPU使用情况统计。-d:仅显示磁盘I/O统计。-x:显示扩展的磁盘I/O统计。-m:以MB为单位显示所有的块设备(磁盘)的I/O统计。-p [设备]:显示指定分区或全部分区的统计信息。-t:在报告中包含时间戳信息。-k:以千字节为单位显示数据,而不是默认的扇区。-z:省略所有为零的输出行,只显示活动的设备。-j ID:显示指定的磁盘组的统计信息,例如-j ID,sda。
我们可以组合使用这些参数来定制输出,以便更好地满足监控需求。例如:
iostat -dxmt 1 5
这个命令将以扩展模式显示详细的磁盘I/O统计信息(-dx),包括时间戳(-t),以MB为单位(-m),每1秒更新一次,总共显示5次输出结果。
解释输出结果的关键指标包括:
- Device: 设备名称,例如
sda或dm-0。 - rrqm/s: 每秒合并读取请求的数量。
- wrqm/s: 每秒合并写入请求的数量。
- r/s: 每秒完成的读I/O操作数量。
- w/s: 每秒完成的写I/O操作数量。
- rkB/s: 每秒从设备读取的数据量(以KB为单位)。
- wkB/s: 每秒向设备写入的数据量(以KB为单位)。
- avgrq-sz: 平均每次I/O操作的数据大小(以扇区为单位)。
- avgqu-sz: 平均I/O队列长度。
- await: 平均每次I/O操作的等待时间(以毫秒为单位)。
- r_await: 平均每次读操作的等待时间(以毫秒为单位)。
- w_await: 平均每次写操作的等待时间(以毫秒为单位)。
- svctm: 平均每次I/O操作的服务时间(以毫秒为单位)。
- %util: 设备的利用率百分比,接近100%意味着设备接近饱和。
请注意,svctm和%util字段在多核处理器系统上可能不会提供准确的指标,因为它们不能很好地反映并发操作。
例如,如果您看到%util值接近或等于100%,这通常意味着您的磁盘在指定的时间间隔内几乎一直在忙碌,但并不代表已到达性能上限。如果await值很高,这可能表明I/O请求等待时间过长,可能是由于磁盘过于繁忙或存在I/O性能瓶颈。
使用iostat时,通常需要收集一段时间的数据,并对结果进行长期分析,以便更准确地理解系统的I/O性能,下面是本机运行的截图
