linux iostat命令

iostat命令 用于监控系统输入输出设备和CPU的使用情况。它是sysstat工具包的一部分,常用于性能分析和系统调优。

命令格式

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

常用选项

选项 说明
-c 只显示CPU使用情况
-d 只显示设备使用情况
-k 以KB为单位显示数据
-m 以MB为单位显示数据
-x 显示扩展统计信息
-p 显示指定设备或所有设备
-t 显示时间戳
-h 人性化显示(易读格式)

输出字段说明

CPU统计信息

字段 说明
%user 用户态CPU使用率
%nice 低优先级用户态CPU使用率
%system 内核态CPU使用率
%iowait CPU等待IO的时间百分比
%steal 虚拟CPU被hypervisor占用的时间
%idle CPU空闲时间百分比

磁盘统计信息

字段 说明
Device 设备名称
tps 每秒传输次数
kB_read/s 每秒读取的数据量(KB)
kB_wrtn/s 每秒写入的数据量(KB)
kB_read 读取的总数据量(KB)
kB_wrtn 写入的总数据量(KB)

使用实例

1. 显示所有设备的CPU和磁盘统计信息
iostat
2. 每隔2秒显示一次,共显示3次
iostat 2 3
3. 只显示CPU使用情况
iostat -c
4. 只显示磁盘使用情况
iostat -d
5. 显示扩展统计信息(包括更多磁盘指标)
iostat -x
6. 以MB为单位显示数据
iostat -m
7. 显示指定磁盘的统计信息
iostat -p sda
8. 显示所有磁盘的扩展统计信息,每2秒刷新一次
iostat -dx 2
9. 显示带时间戳的统计信息
iostat -t

实际输出示例

# iostat -x 1 3
Linux 5.4.0-42-generic (server)  08/15/2023  _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.45    0.01    1.78    0.25    0.00   92.51

Device            r/s     w/s     rkB/s     wkB/s   await  svctm  %util
sda              2.50    1.20    102.40     50.40    1.20   0.80   0.30
sdb              0.50    0.30     20.48     12.29    0.90   0.60   0.05
注意:
  • iostat第一次报告显示的是系统启动以来的统计信息,后续报告显示的是上一个间隔时间内的统计信息
  • %iowait过高可能表示磁盘存在瓶颈
  • %util接近100%表示设备接近满负荷运行
  • 使用-x选项可以获得更详细的性能指标

安装iostat

如果系统没有安装iostat,可以使用以下命令安装:

# Ubuntu/Debian
sudo apt-get install sysstat

# CentOS/RHEL/Fedora
sudo yum install sysstat

# 启动服务
sudo systemctl start sysstat
sudo systemctl enable sysstat