详解iostat -dx 1命令监控IO性能

运维 系统运维
网站的很多性能问题最终都会归结到IO头上,所以说理解iostat命令是非常有必要的。你知道iostat是从哪里得到IO相关信息的吗?本文对iostat -dx 1命令进行详细介绍

 网站的很多性能问题最终都会归结到IO头上,所以说理解iostat命令是非常有必要的。

小技巧:你知道iostat是从哪里得到IO相关信息的吗?使用strace命令能跟踪到答案:

shell> strace -eopen iostat
open("/proc/diskstats", O_RDONLY)

注:关于diskstats的说明,参见官方文档(field1 ~ field11)。

我最常用的iostat命令格式是:『iostat -dx 1』,意思是每隔一秒显示一次IO扩展信息。

shell> iostat -dx 1
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s
sda 0.18 37.71 0.65 2.63 50.18 322.08
avgrq-sz avgqu-sz await svctm %util
113.46 0.35 107.49 1.67 0.55
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s
sda 0.00 4208.00 0.00 165.00 0.00 163872.00
avgrq-sz avgqu-sz await svctm %util
993.16 119.54 1144.36 6.07 100.10

注:开头显示的是自系统启动开始的平均值,后面显示的是每段时间间隔里的平均值。

如果你的操作系统里没有iostat命令的话,除了从源代码安装,还可以使用下面方式:

  • Centos/Fedora的安装方式是:yum install sysstat
  • Debian/Ubuntu的安装方式是:aptitude install sysstat

介绍一下相关参数的含义:

  • rrqm/s:队列中每秒钟合并的读请求数量
  • wrqm/s:队列中每秒钟合并的写请求数量
  • r/s:每秒钟完成的读请求数量
  • w/s:每秒钟完成的写请求数量
  • rsec/s:每秒钟读取的扇区数量
  • wsec/s:每秒钟写入的扇区数量
  • avgrq-sz:平均请求数据的大小
  • avgqu-sz:平均请求队列的长度
  • await:平均每次请求的等待时间
  • svctm:平均每次请求的服务时间
  • util:设备的利用率

注:建议对照源代码来记忆这些参数都是如何计算出来的。

关于这些参数,相对重要的是后面几个,具体来说是:util,svctm,await,avgqu-sz:

util是设备的利用率。如果它接近100%,通常说明设备能力趋于饱和(并不绝对,比如设备有写缓存)。有时候可能会出现大于100%的情况,这多半是计算时四舍五入引起的,但如果是磁盘阵列等多盘系统,因为具有并发IO操作的能力,也会出现大于100%的情况。

svctm是平均每次请求的服务时间。从源代码里可以看出:(r/s+w/s)*(svctm/1000)=util。举例子:如果util达到100%,那么此时svctm=1000/(r/s+w/s),假设IOPS是1000,那么svctm大概在1毫秒左右,如果长时间大于这个数值,说明系统出了问题。不过前面已经说过在磁盘阵列等多盘系统中util可能出现偏大的情况,所以svctm相应的也可能偏大。

await是平均每次请求的等待时间。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

avgqu-sz是平均请求队列的长度。毫无疑问,队列长度越短越好。

说明:svctm参数在未来某个版本的iostat会被删除,详见官方文档

另外,有时候iostat会显示一些很离谱的结果,具体原因详见官方FAQ给出的解释。

原文:http://huoding.com/2011/07/13/91

【编辑推荐】

  1. iostat来对linux硬盘IO性能进行检测
  2. nagios监控iostat
  3. Linux 性能检测工具iostat,ps和pstree
责任编辑:黄丹 来源: huoding.com
相关推荐

2011-03-28 17:18:57

nagios监控iostat

2014-01-23 13:41:29

Linux系统性能监控

2011-06-02 10:07:28

iostatlinux

2011-11-08 21:47:37

Linux 监控 IO

2010-05-26 18:31:51

Linux性能监控

2021-05-17 11:55:48

监控命令Linux

2021-03-16 10:20:56

监控系统架构技术

2010-05-26 12:57:59

linux 系统监控

2018-09-10 10:20:26

磁盘 IO网络 IO监控

2023-12-28 11:24:29

IO系统请求

2022-07-26 10:28:00

Linux监控命令

2019-03-28 08:00:00

Linux磁盘IO监控存储设备

2010-05-26 18:08:30

Linux性能监控

2019-11-01 08:49:07

JVM监控性能

2012-05-09 10:52:37

Linux监控命令

2021-01-15 13:37:43

Portainer.iDocker运维

2023-12-20 14:38:50

Linux磁盘IO

2011-07-07 10:20:38

2019-06-05 09:14:28

LinuxIO监控分析

2019-07-25 07:14:03

LinuxSync操作系统
点赞
收藏

51CTO技术栈公众号