命令 iostat
iostat
一般系统不会默认安装,需要安装sysstat
才能使用,在ubuntu下sudo apt install sysstat
即可。
功能
iostat
用于报告CPU以及各个设备及分区IO的统计信息
用法
# interval表示打印的间隔,count表示打印的次数,如果只有interval,则无限打印下去
iostat [option] [interval] [count]
# 每隔一秒打印一次,打印3次
# -h表示 以更容易看的方式打印,特别是屏幕宽度不够时,会自动分行打印
# -x表示打印扩展信息
iostat -xh 1 3
# 直接用,打印一次,指标较少点
iostat
以下截图使用:iostat -xh 1 1
产生
接下来一一介绍里面的各项指标含义,只有系统了解下各个指标,才能用好这个工具
上面的指标可以分为两类,第一类就是cpu相关,即第一行;第二类就是设备相关,即末尾是Device
的行。
CPU指标
对于多处理器系统,CPU值是所有处理器之间的全局平均值。且以下指标加起来和为1
%user
: 显示在用户级别执行时出现的CPU利用率百分比(应用程序)。%nice
: 显示具有用户优先级的在用户级别执行时发生的CPU利用率百分比。%system
: 显示在系统级别(内核)执行时发生的CPU利用率百分比。%iowait
: 显示在系统有未完成的磁盘I/O请求期间,CPU空闲(等待IO,不干正活)的时间百分比,越快的CPU这个值也会越高。但是这个指标还是需要关注%steal
: 显示在管理程序为另一个虚拟处理器提供服务时,一个或多个虚拟CPU在非自愿等待中花费的时间百分比。%idle
: 显示CPU空闲且系统没有未完成的磁盘I/O请求的时间百分比。
设备使用指标
设备报告提供了基于每个物理设备或分区的统计信息。 可以在命令行上输入要显示其统计信息的块设备和分区。 如果未输入设备或分区,则将显示系统使用的每个设备的统计信息,并提供内核维护的统计信息。 如果在命令行上指定了ALL关键字,则将显示系统定义的每个设备的统计信息,包括从未使用过的设备。 除非设置了环境变量POSIXLY_CORRECT(在这种情况下使用512字节的块),否则默认情况下传输速率以1K块显示。 该报告可能会显示以下字段,具体取决于使用的标志
读指标
写和抛弃指标与读差不多,理解一个就行了。
r/s
:每秒设备完成的读取请求数(合并后)。这个大可能说明很多随机IOrkB/s
:从设备中每秒读的kB数量rrqm/s
: 每秒排队到设备中的合并读取请求的数量%rrqm
: 读取请求在发送到设备之前已合并在一起的百分比。r_await
: 发出要服务的设备的读取请求的平均时间(以毫秒为单位)。 这包括队列中的请求所花费的时间以及为请求服务所花费的时间。重点关注,对于HDD,高于20ms可能就请求太多,导致排队了,因为正常一次寻道也就10ms。rareq-sz
: 发出给设备的读取请求的平均大小(以千字节为单位)。
写指标
w/s
:每秒设备完成的写入请求数(合并后)。wkB/s
:从设备中每秒写入的kB数量wrqm/s
: 每秒排队到设备中的合并写入请求的数量%wrqm
: 写入请求在发送到设备之前已合并在一起的百分比。w_await
: 发出要服务的设备的写入请求的平均时间(以毫秒为单位)。 这包括队列中的请求所花费的时间以及为请求服务所花费的时间。重点关注,对于HDD,高于20ms可能就请求太多,导致排队了,因为正常一次寻道也就10ms。wareq-sz
: 发出给设备的写入请求的平均大小(以千字节为单位)。
抛弃指标
d/s
:每秒设备完成的抛弃请求数(合并后)。dkB/s
:从设备中每秒抛弃的kB数量drqm/s
: 每秒排队到设备中的合并抛弃请求的数量%drqm
:抛弃请求在发送到设备之前已合并在一起的百分比。d_await
: 发出要服务的设备的抛弃请求的平均时间(以毫秒为单位)。 这包括队列中的请求所花费的时间以及为请求服务所花费的时间。dareq-sz
: 发出给设备的抛弃请求的平均大小(以千字节为单位)。
其它
aqu-sz
: 发出到设备的请求的平均队列长度。 注意:在以前的版本中,此字段称为avgqu-sz。这个指标高需要重点关注,可能IO太多,需要等待
%util
: 向设备发出I/O请求的经过时间百分比(设备的带宽利用率)。 当串行服务请求的设备的该值接近100%时,将发生设备饱和。 但是对于并行处理请求的设备(例如RAID阵列和现代SSD),此数字并不反映其性能限制。这个指标高说明IO基本上就到瓶颈了,但是低也不一定IO就不是瓶颈。
Device
:设备名
上面各项指标基本能大致判断IO出现瓶颈,然后如果系统上没有iostat指令,又来不及安装的话,也可以通过top
命令大致判断:
如果wa
指标比较高的话,很可能CPU在等IO