[Linux] iostat 分析磁盘瓶颈

出品 | 掘金(ID:我就菜咋了

命令 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 产生[Linux] iostat 分析磁盘瓶颈

接下来一一介绍里面的各项指标含义,只有系统了解下各个指标,才能用好这个工具

上面的指标可以分为两类,第一类就是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:每秒设备完成的读取请求数(合并后)。这个大可能说明很多随机IO
  • rkB/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命令大致判断:

[Linux] iostat 分析磁盘瓶颈 如果wa指标比较高的话,很可能CPU在等IO



原文始发于微信公众号(运维贼船):[Linux] iostat 分析磁盘瓶颈

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/176830.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!