对于I/O-bond类型的进程,我们经常用iostat工具查看进程IO请求下发的数量、系统处理IO请求的耗时,进而分析进程与操作系统的交互过程中IO方面是否存在瓶颈。
下面通过iostat命令使用实例,说明使用iostat查看IO请求下发情况、系统IO处理能力的方法,以及命令执行结果中各字段的含义。
1.不加选项执行iostat
我们先来看直接执行iostat的输出结果:
[root@server1 ~]# iostat
Linux 3.10.0-514.el7.x86_64 (server1.westos.com) 04/12/2019 x86_64 (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.73 0.00 0.66 0.01 0.00 98.60
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 4.10 76.17 12.31 158369 25601
单独执行iostat,显示的结果为从系统开机到当前执行时刻的统计信息。以上输出中,除最上面指示系统版本、主机名和日期的一行外,另有两部分:
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
Device: 各磁盘设备的IO统计信息
对于cpu统计信息一行,我们主要看iowait的值,它指示cpu用于等待io请求完成的时间。Device中各列含义如下:
Device: 以sdX形式显示的设备名称