iostat
linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令 来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。
iostat 由 Red Hat Enterprise Linux AS 发布。同时 iostat 也是 Sysstat 的一部分。所以我们安装要安装sysstat。
iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
1. 安装
yum install -y sysstat
2. 用法
[root@781c38071bbd ~]# iostat --help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ [ -T ] -g <用户组名> ] [ -p [ <设备> [,...] | ALL ] ]
[ <设备> [...] | ALL ]
-c:仅显示CPU使用情况
-d:仅显示设备利用率
-k:显示状态以千字节每秒为单位,而不使用块每秒
-m:显示状态以兆字节每秒为单位
-p:仅显示块设备和所有被使用的其他分区的状态
-t:显示每个报告产生时的时间
-V:显示版号并退出
-x:显示扩展状态
3. 实践
[root@781c38071bbd ~]# iostat -x
Linux 3.10.0-957.el7.x86_64 (781c38071bbd) 2022年06月21日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
7.00 0.00 1.39 0.14 0.04 91.43
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.01 0.02 0.53 1.15 8.54 35.30 0.06 1638.56 8.50 1695.51 2.75 0.15
scd0 0.00 0.00 0.00 0.00 0.00 0.00 6.63 0.00 1.68 1.68 0.00 1.68 0.00
4. 字段说明
%user:应用程序使用CPU的时间占比
%nice:拥有高优先级的应用程序使用CPU的时间占比
%system:内核程序使用CPU的时间占比
%iowait:表示等待进行 I/O 所使用 CPU 的时间百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%idle:显示 CPU 的空闲时间
Device:监测设备名称
rrqm/s:每秒需要读取需求的数量
wrqm/s:每秒需要写入需求的数量
r/s :每秒实际读取需求的数量
w/s:每秒实际写入需求的数量
rkB/s:每秒实际读取的大小,单位为KB
wkB/s:每秒实际写入的大小,单位为KB
avgrq-sz:平均每次设备I/O操作的数据大小
avgqu-sz:平均I/O队列长度
await:平均每次设备I/O操作的等待时间
svctm:平均每次设备I/O操作的服务时间
%util:被I/O操作消耗的CPU百分比