理解iostat的各项输出

在Linux中,我们执行一个iostat -x命令,我们能看到如下的输出


  $iostat -x

  Linux 2.4.21-50a6smp (linux) 11/03/2009

  avg-cpu: %user %nice %sys %iowait %idle

  0.42 0.00 0.26 0.47 98.86

  Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util

  hdc 0.01 0.00 0.00 0.00 0.07 0.00 0.03 0.00 24.48 0.00 4.90 4.57 0.00

  hda 0.89 8.54 0.74 4.49 12.60 104.22 6.30 52.11 22.32 0.03 5.41 1.01 0.53


  我们先列举一下各个性能指标的简单说明。

  rrqm/s:每秒进行merge的读操作数目。

  wrqm/s:每秒进行merge的写操作数目。

  r/s:每秒完成的读I/O设备次数。

  w/s:每秒完成的写I/O设备次数。

  rsec/s:每秒读扇区数。

  wsec/s:每秒写扇区数。

  rkB/s:每秒读K字节数。

  wkB/s:每秒写K字节数。

  avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。

  avgqu-sz:平均I/O队列长度。

  await:平均每次设备I/O操作的等待时间(毫秒)。

  svctm:平均每次设备I/O操作的服务时间(毫秒)。

  %util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。

  要理解这些性能指标我们先看下图


上图的左边是iostat显示的各个性能指标,每个性能指标都会显示在一条虚线之上,这表明这个性能指标是从虚线之上的那个读写阶段开始计量的,比如说图中的w/s从Linux IO scheduler开始穿过硬盘控制器(CCIS/3ware),这就表明w/s统计的是每秒钟从Linux IO scheduler通过硬盘控制器的写IO的数量。


  结合上图对读IO操作的过程做一个说明,在从OS Buffer Cache传入到OS Kernel(Linux IO scheduler)的读IO操作的个数实际上是rrqm/s+r/s,直到读IO请求到达OS Kernel层之后,有每秒钟有rrqm/s个读IO操作被合并,最终转送给磁盘控制器的每秒钟读IO的个数为r/w;在进入到操作系统的设备层(/dev/sda)之后,计数器开始对IO操作进行计时,最终的计算结果表现是await,这个值就是我们要的IO响应时间了;svctm是在IO操作进入到磁盘控制器之后直到磁盘控制器返回结果所花费的时间,这是一个实际IO操作所花的时间,当await与svctm相差很大的时候,我们就要注意磁盘的IO性能了;而avgrq-sz是从OS Kernel往下传递请求时单个IO的大小,avgqu-sz则是在OS Kernel中IO请求队列的平均大小。


  现在我们可以将iostat输出结果和我们前面讨论的指标挂钩了。

  平均单次IO大小(IO Chunk Size) avgrq-sz

  平均IO响应时间(IO Response Time) await

  IOPS(IO per Second) r/s + w/s

  吞吐率(Throughtput) rkB/s + wkB/s

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iostat是一个系统性能监控工具,用于显示Linux或Unix系统中的磁盘I/O统计信息。它的输出通常会包括多个字段和指标,这些可以帮助管理员了解系统的硬盘使用情况、磁盘队列长度以及CPU时间分配给I/O操作的程度。 iostat的标准输出可能包含以下几个部分: 1. 轮询间隔时间和当前时间。 2. 各个磁盘分区(如sda, sdb等)的统计信息: - **读**(r/s):每秒读取的数据量,单位通常为MB/s。 - **写**(w/s):每秒写入的数据量,同样单位为MB/s。 - **平均等待时间**(await):设备响应请求的时间,单位是微秒(us),越低表示性能越好。 - **平均服务时间**(svctm):处理每个IO请求的总时间,包括等待和其他处理时间。 - **读操作次数**(r/):每秒完成的读操作数。 - **写操作次数**(w/):同理,但针对写操作。 - **读错误率**(%rrqm):由于磁盘忙而导致未完成读请求的比例。 - **写错误率**(%wrqm):类似,但针对写操作。 - **队列长度**(queuing):等待被服务的IO请求数量。 - **磁盘I/O权重**(weighted queue length,wq):结合了上述两个值的计算,用于调度算法。 3. CPU时间的分类,如`disk`(花费在磁盘I/O上的CPU时间)、`user`(用户空间活动)和`sys`(内核空间活动)。 4. 如果系统有多块设备,可能会有额外的汇总信息,展示所有磁盘的总和。 理解iostat的结果对优化系统资源分配、诊断硬件故障或优化存储配置至关重要。当看到某个磁盘的平均等待时间过长或队列长度增加,可能是需要考虑提升硬盘性能或调整I/O调度策略的时候。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值