`

(转)通过『iostat -dx 1』命令监控IO性能

 
阅读更多
http://huoding.com/2011/07/13/91
网站的很多性能问题最终都会归结到IO头上,所以说理解iostat命令是非常有必要的。


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

shell> strace -eopen iostat
open("/proc/diskstats", O_RDONLY)注:Strace教程:5 simple ways to troubleshoot using Strace

注:关于diskstats的说明,参见官方文档(主要是其中的field1 ~ field11部分)。

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

Centos/Fedora的安装方式是:yum install sysstat
Debian/Ubuntu的安装方式是:aptitude install sysstat
我最常用的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注:开头显示的是自系统启动开始的平均值,后面显示的是每段时间间隔里的平均值。

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

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%的情况,这是因为读取数据的时候是非原子操作。

svctm是平均每次请求的服务时间。从源代码里可以看出:(r/s+w/s)*(svctm/1000)=util。举例子:如果util达到100%,那么此时svctm=1000/(r/s+w/s),假设IOPS是1000,那么svctm大概在1毫秒左右,如果长时间大于这个数值,说明系统出了问题。

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

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

说明:svctm参数在未来某个版本的iostat会被删除,官方文档是这样描述原因的:

The average service time (svctm field) value is meaningless, as I/O statistics are calculated at block level, and we don’t know when the disk driver starts to process a request. For this reason, this field will be removed in a future sysstat version.

另外,有时候iostat会显示一些很离谱的结果,官方FAQ给出了如下的解释:

Because of a Linux kernel bug, iostat -x may display huge I/O response times (svctm) and a bandwidth utilization (%util) of 100% for some devices. Indeed these devices have a value for the field #9 (beginning after the device name) in /proc/{partitions,diskstats} which is always different from 0, and even negative sometimes. Yet this field should go to zero, since it gives the number of I/Os currently in progress (it is incremented as requests are submitted, and decremented as they finish). To (temporarily) solve the problem, you should reboot your system to reset the counters in /proc/{partitions,diskstats}.

如果大家想要更系统的了解关于IO的相关知识,可以参考如下资料:

Getting the hang of IOPS
Basic I/O Monitoring on Linux
分享到:
评论

相关推荐

    SUN 硬盘HardError清除插件 iostat-HradErro清除.zip

    描述中再次提到了"SUN 硬盘HardError清除插件 iostat-HradErro清除.zip",这里的"iostat"是UNIX/Linux系统中的一个监控工具,用于实时监控系统的输入/输出(I/O)状态,包括磁盘活动。"HradErro"看起来可能是"Hard...

    iostat-nvme0n1.xml

    一个zabbix监控模板,用于监控系统中的nvme0n1的性能,值取自iostat。agent端脚本见文章

    iostat 监视磁盘操作,磁盘IO

    在IT系统管理中,有效地监控磁盘操作和IO性能至关重要,因为这直接影响到系统的响应速度和整体性能。`iostat`是一个强大的工具,用于实时监控Linux和Unix系统的输入/输出(I/O)活动,它可以帮助管理员识别磁盘瓶颈...

    服务器IO性能评估【监控命令+性能指标+iostat使用】[收集].pdf

    本篇文章将针对服务器IO性能评估的重要内容进行详细阐释,内容涵盖监控命令、性能指标及iostat工具的使用。 首先,服务器IO性能评估的工作原理是通过一系列监控手段,实时跟踪磁盘IO的活动状态、资源利用情况以及...

    如何使用iostat查看linux硬盘IO性能

    "Linux硬盘IO性能优化指南" 在Linux系统中,硬盘IO性能是服务器...iostat命令是Linux系统中一个非常有用的性能分析工具,通过使用iostat命令,我们可以了解硬盘的IO性能,优化服务器的IO性能,提高服务器的整体性能。

    AIX的iostat命令解析.docx

    AIX操作系统中的iostat命令是一种强大的磁盘性能分析工具,用于监控和分析磁盘的性能和活动情况。在本文中,我们将详细介绍iostat命令的使用和解析,并探讨其在磁盘性能分析和优化中的应用。 iostat命令的基本语法...

    iostat来对linux硬盘IO性能进行检测

    总的来说,通过熟练运用iostat工具,我们可以有效地监控Linux系统的硬盘I/O性能,及时发现并解决问题,从而保证系统的高效稳定运行。在日常运维工作中,定期进行I/O性能检测,结合系统资源使用情况,进行优化调整,...

    Linux下使用iostat监测IO状态

    通过 iostat,我们可以获取丰富的 IO 状态数据,从而帮助我们更好地了解系统的性能问题。 基本使用 -------- iostat 的基本使用非常简单,只需要在命令行中输入 `iostat` 命令,后面可以添加一些参数来控制输出...

    cacti linux系统iostat监控

    Cacti是一款开源的网络监控工具,主要用于网络设备和服务器的性能监控,提供实时和历史数据图表。在Linux系统中,Cacti可以利用iostat命令来监控系统的输入/输出(I/O)性能,帮助管理员了解磁盘、块设备以及其他...

    Linux IO实时监控iostat命令详解.pdf

    ### Linux IO实时监控iostat命令详解 #### 前言 在Linux系统管理与运维过程中,实时监控系统的I/O负载对于确保系统稳定性和性能至关重要。`iostat`工具作为一个强大的系统监视工具,能够帮助管理员监控系统中的磁盘...

    UNIX常用性能监控命令.doc

    本文将详细介绍一些常用的性能监控命令,包括查看网络连接性、检查网络接口、监控主机路由、磁盘I/O性能以及AIX系统的内存监视。 1. **网络连通性检查**: 使用`ping`命令可以检查与目标主机的网络连通性。例如,`...

    详解Linux命令iostat

    iostat 命令是查看 Linux 系统 IO 是否存在瓶颈的重要工具之一,提供了丰富的 IO 状态数据,帮助我们快速定位系统性能瓶颈。在 CentOS 系统中,默认情况下没有安装 iostat 命令,需要手动安装。使用 iostat 命令可以...

    Linux-IO性能优化基础工具和实践

    Linux-IO性能优化基础工具和实践: 基础篇-Linux IO stack overview 基础篇-read syscall IO stack 工具篇-iostat数据可靠吗 工具篇-blktrace原理和应用 工具篇-debugfs应用 Cache server机械盘IO性能瓶颈分析 实践...

    Linux下使用iostat监测IO状态.docx

    在Linux系统中,性能监控是非常重要的环节之一。当遇到性能问题时,通过一系列的工具和命令可以帮助我们快速定位问题所在。`iostat`作为其中一个重要的工具,主要用于收集、报告、监控系统的CPU和设备负载情况,特别...

    磁盘io性能监控(linux和windows).docx

    磁盘IO性能监控在IT运维中扮演着至关重要的角色,特别是在服务器性能调优和故障排查过程中。无论是Linux还是Windows系统,了解磁盘IO的状态对于识别系统瓶颈和优化系统性能至关重要。 在Linux环境中,我们通常使用...

    zabbix监控IO

    其中,磁盘IO监控是Zabbix的一项重要功能,通过监控磁盘读写性能,可以帮助管理员及时发现并解决潜在的问题,确保业务连续性和系统稳定性。 #### 二、Zabbix磁盘IO监控实施步骤 ##### 1. 所需文件与工具 - **...

    sysstat-12.2.1

    《sysstat-12.2.1:深入理解Linux下的iostat命令及其源代码分析》 在Linux操作系统中,监控系统性能是管理员...通过对源代码的学习和实践,我们可以更深入地理解Linux系统性能监控,提升故障排查和性能优化的效率。

    linux中查看io的相关命令

    我们可以使用 vmstat -1 命令来查看虚拟内存的状态,并通过 b 参数来查看等待资源的进程数。 4. 使用 dd 命令 Dd 命令可以用来测试硬盘的 IO 负荷情况。例如,我们可以使用 time dd if=/dev/zero bs=1M count=2048...

Global site tag (gtag.js) - Google Analytics