Linux——iostat 分析磁盘瓶颈

命令 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:每秒设备完成的读取请求数(合并后)。这个大可能说明很多随机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命令大致判断:

在这里插入图片描述
如果wa指标比较高的话,很可能CPU在等IO

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iostat是一个用于查看系统磁盘IO状态的命令行工具,可以帮助我们分析磁盘压力。通过运行iostat命令,我们可以获取关于磁盘读写速度、磁盘队列长度等信息。 在使用iostat命令时,我们可以添加参数来指定查询的磁盘和时间间隔。例如,`iostat -x 1`表示每秒钟查询一次磁盘IO数据,并显示所有磁盘的详细信息。 通过iostat我们可以了解以下信息: 1. 设备名称:列出了系统中每个磁盘设备的名称,帮助我们区分不同磁盘。 2. 磁盘传输速率:显示每秒钟磁盘的平均读取和写入速率,以MB/s为单位。 3. 磁盘队列长度:表示磁盘I/O请求的平均等待时间。如果队列长度过高,可能意味着系统磁盘负载过重,可能导致性能下降。 4. 平均响应时间:显示磁盘I/O请求的平均处理时间,以毫秒为单位。较高的响应时间可能表示磁盘访问延迟。 5. 错误率:显示磁盘传输过程中出现的错误率,如读写错误、超时等。 6. CPU利用率:显示系统中每个CPU的磁盘负载百分比,帮助我们了解磁盘压力对CPU的影响。 7. 磁盘饱和度:显示每个磁盘的I/O操作的百分比,以反映磁盘的利用率。 总而言之,通过iostat命令我们可以实时监测系统中的磁盘压力,分析其读写速率、队列长度、响应时间等指标,帮助我们优化磁盘使用和调整系统配置,以提高系统的整体性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值