一、iostat命令介绍
iostat命令是linux/unix系统中的一种工具,用于监控系统的磁盘i/o活动情况,可以展示磁盘的读写速率、i/o等待时间、cpu使用率等信息。
iostat命令可以帮助系统管理员发现系统瓶颈,并且优化系统来提高性能。
二、iostat命令帮助
1.1 iostat的帮助信息
在linux中的 iostat帮助信息
[root@jeven ~]# iostat --help
usage: iostat [ options ] [ <interval> [ <count> ] ]
options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -n ] [ -t ] [ -v ] [ -x ] [ -y ] [ -z ]
[ -j { id | label | path | uuid | ... } ]
[ [ -t ] -g <group_name> ] [ -p [ <device> [,...] | all ] ]
[ <device> [...] | all ]
1.2 iostat的选项解释
iostat的选项解释
- -c: 仅显示cpu利用率相关信息;
- -d: 仅显示磁盘i/o相关信息;
- -k: 显示输出的数据单位为kb/s而不是默认的字节/s;
- -t: 在输出中显示时间戳(时间戳格式yyyy-mm-dd hh:mm:ss)。
- -m:显示状态以兆字节每秒为单位;
- -p:仅显示块设备和所有被使用的其他分区的状态;
- -v:显示版号并退出;
- -x:显示扩展状态。
参数解释
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
三、iostat命令的基本使用
3.1 查看iostat工具版本
查看iostat工具版本
[root@jeven ~]# iostat -v sysstat version 10.1.5 (c) sebastien godard (sysstat <at> orange.fr)
3.2 直接使用iostat命令
直接使用iostat命令,查看系统的整体情况,显示cpu的负载情况和磁盘的状态信息。
[root@jeven ~]# iostat
linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu)
avg-cpu: %user %nice %system %iowait %steal %idle
0.91 0.01 3.43 0.04 0.00 95.62
device: tps kb_read/s kb_wrtn/s kb_read kb_wrtn
sda 3.22 38.47 84.87 4775774 10535362
dm-0 3.72 38.14 84.69 4735028 10512927
dm-1 0.00 0.02 0.00 2740 364
dm-2 0.00 0.05 0.05 6781 6606
3.3 间隔5秒查看3次信息
- 每隔5秒,查看系统的状态信息,一共查看3次。
[root@jeven ~]# iostat 5 3
linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu)
avg-cpu: %user %nice %system %iowait %steal %idle
0.91 0.01 3.45 0.04 0.00 95.59
device: tps kb_read/s kb_wrtn/s kb_read kb_wrtn
sda 3.23 38.34 84.81 4775782 10564971
dm-0 3.73 38.01 84.63 4735036 10542537
dm-1 0.00 0.02 0.00 2740 364
dm-2 0.00 0.05 0.05 6781 6606
avg-cpu: %user %nice %system %iowait %steal %idle
2.35 0.00 10.43 0.00 0.00 87.22
device: tps kb_read/s kb_wrtn/s kb_read kb_wrtn
sda 3.60 0.00 38.10 0 190
dm-0 3.60 0.00 38.10 0 190
dm-1 0.00 0.00 0.00 0 0
dm-2 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
2.26 0.00 10.48 0.00 0.00 87.26
device: tps kb_read/s kb_wrtn/s kb_read kb_wrtn
sda 0.60 0.00 5.30 0 26
dm-0 0.60 0.00 5.30 0 26
dm-1 0.00 0.00 0.00 0 0
dm-2 0.00 0.00 0.00 0 0
3.4 只查看磁盘状态
- 只查看磁盘的状态信息,展示磁盘的读写速率、i/o等待时间、cpu使用率等信息。
[root@jeven ~]# iostat -d linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu) device: tps kb_read/s kb_wrtn/s kb_read kb_wrtn sda 3.23 38.31 84.79 4775782 10570681 dm-0 3.73 37.98 84.61 4735036 10548247 dm-1 0.00 0.02 0.00 2740 364 dm-2 0.00 0.05 0.05 6781 6606
- 实时监控,每隔5秒就显示磁盘信息。
iostat -d 5

3.5 以k或m为单位显示信息
以k或m为单位显示信息
[root@jeven ~]# iostat -k
linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu)
avg-cpu: %user %nice %system %iowait %steal %idle
0.92 0.01 3.49 0.04 0.00 95.54
device: tps kb_read/s kb_wrtn/s kb_read kb_wrtn
sda 3.25 38.12 84.70 4775782 10611155
dm-0 3.75 37.80 84.52 4735036 10588721
dm-1 0.00 0.02 0.00 2740 364
dm-2 0.00 0.05 0.05 6781 6606
[root@jeven ~]# iostat -m
linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu)
avg-cpu: %user %nice %system %iowait %steal %idle
0.92 0.01 3.49 0.04 0.00 95.54
device: tps mb_read/s mb_wrtn/s mb_read mb_wrtn
sda 3.25 0.04 0.08 4663 10363
dm-0 3.75 0.04 0.08 4624 10341
dm-1 0.00 0.00 0.00 2 0
dm-2 0.00 0.00 0.00 6 6
四、查看磁盘i/o的详细情况
- 查看某块磁盘i/o的详细情况
[root@jeven ~]# iostat -x /dev/sda
linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu)
avg-cpu: %user %nice %system %iowait %steal %idle
0.91 0.01 3.47 0.04 0.00 95.57
device: rrqm/s wrqm/s r/s w/s rkb/s wkb/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.51 0.74 2.50 38.26 84.77 76.04 0.03 10.45 14.10 9.37 0.84 0.27
device 监测设备名称
- rrqm/s 每秒需要读取需求的数量
- wrqm/s 每秒需要写入需求的数量
- r/s 每秒实际读取需求的数量
- w/s 每秒实际写入需求的数量
- rsec/s 每秒读取区段的数量
- wsec/s 每秒写入区段的数量
- rkb/s 每秒实际读取的大小,单位为kb
- wkb/s 每秒实际写入的大小,单位为kb
- avgrq-sz 需求的平均大小区段
- avgqu-sz 需求的平均队列长度
- await 等待i/o平均的时间(milliseconds)
- svctm i/o需求完成的平均时间
- %util 被i/o需求消耗的cpu百分比
五、查看cpu状态信息
查看cpu状态信息
[root@jeven ~]# iostat -c 5 2
linux 3.10.0-957.el7.x86_64 (jeven) 07/05/2023 _x86_64_ (2 cpu)
avg-cpu: %user %nice %system %iowait %steal %idle
0.92 0.01 3.48 0.04 0.00 95.56
avg-cpu: %user %nice %system %iowait %steal %idle
2.36 0.00 10.66 0.00 0.00 86.99
- %user:表示用户空间程序执行的cpu时间百分比。
- %nice:表示以较高的优先级运行的用户进程的cpu时间百分比。
- %system:表示内核空间程序执行的cpu时间百分比。
- %iowait:表示cpu等待i/o操作完成的时间百分比。
- %steal:表示由于运行虚拟机等原因被其他虚拟机占用的cpu时间百分比。
- %idle:表示cpu空闲时间的百分比。
六、iostat命令的使用总结
6.1 磁盘模块分析
在使用iostat进行系统性能监控时,需要注意综合分析磁盘和cpu等多个性能指标,以全面评估系统性能瓶颈的位置和原因。
通过监控以上指标,可以识别磁盘的瓶颈位置,例如:
- 如果r/s和w/s较高,说明磁盘io压力较大,需要考虑更换更高性能的硬盘;
- 如果await和svctm较高,说明磁盘处理i/o请求的能力不足,可能需要更换磁盘控制器或升级磁盘阵列等。
6.2 cpu模块分析
通过监控以上指标,可以识别cpu的瓶颈位置,例如:
- 如果%user和%system较高,说明cpu的负载较大,可能需要考虑升级cpu或增加cpu核心数;
- 如果%iowait较高,说明cpu等待io完成的时间较长,可能需要优化磁盘性能或者减少磁盘io操作;
- 如果%idle值高,表示cpu较空闲,系统处于空闲状态,无太多处理任务;
- 如果%idle值高但系统响应慢时,有可能是cpu等待分配内存,此时应加大内存容量。
- 如果%idle较低,说明cpu负载较大,可能需要考虑优化应用程序或增加cpu资源等。
七、总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论