Unix,Linux 磁盘 IO 性能监控命令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Unix/Linux 磁盘I/O 性能监控命令

磁盘I/O 性能监控指标和调优方法

在介绍磁盘I/O 监控命令前,我们需要了解磁盘I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘I/O 性能监控的指标主要包括:

指标1:每秒I/O 数(IOPS 或tps)

对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘I/O, 磁盘的IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。

指标2:吞吐量(Throughput)

指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。

指标3:平均I/O 数据尺寸

平均I/O 数据尺寸为吞吐量除以I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均I/O 数据尺寸小于32K,可认为磁盘使用模式以随机存取为主;如果平均每次I/O 数据尺寸大于

32K,可认为磁盘使用模式以顺序存取为主。

指标4:磁盘活动时间百分比(Utilization)

磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过70%,应用进程将花费较长的时间等待I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。

指标5:服务时间(Service Time)

指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过20ms,一般可考虑会对上层应用产生影响。

指标6:I/O 等待队列长度(Queue Length)

指待处理的I/O 请求的数目,如果I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O 等待队列长度。

指标7:等待时间(Wait Time)

指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果I/O 请求持续超出磁盘处理能力,意味着来不及处理的I/O 请求不得不在队列中等待较长时间。

通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合CPU、内存、交换分区的使用状况,不难发现磁盘I/O 潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘I/O 性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考:

1.调整数据布局,尽量将I/O 请求较合理的分配到所有物理磁盘中。

2.对于RAID 磁盘阵列,尽量使应用程序I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适

的RAID 方式,如RAID10,RAID5。

3.增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分I/O 请求会因为丢失

而重新发出,这将降低性能。

4.应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。

5.由于多数数据库中已包括经优化后的缓存技术,数据库I/O 宜直接存取原始磁盘分区(raw

partition)或者利用绕过文件系统缓存的DIO 技术(direct IO)

6.利用内存读写带宽远比直接磁盘I/O 操作性能优越的特点,将频繁访问的文件或数据置于内存

中。

磁盘I/O 性能监控命令简介

Unix/Linux 提供了两个非常有用的用于磁盘I/O 性能监控的命令:iostat 和sar。

iostat 命令主要通过观察物理磁盘的活动时间以及他们的平均传输速度,监控系统输入/ 输出设备负载。根据iostat 命令产生的报告,用户可确定一个系统配置是否平衡,并据此在物理磁盘与适配器之间更好地平衡输入/ 输出负载。iostat 工具的主要目的是通过监控磁盘的利用率,而探测到系统中的I/O 瓶颈。不同操作系统命令格式输出格式略有不同,管理员可以通过查看用户手册来确定它的用法。

sar 命令报告CPU 的使用情况,I/O 以及其它系统行为。sar 命令可以收集,报告以及保存系统行为信息。以这种方式收集到的数据对于确定系统的时间周期特征和决定峰值使用时间是很有用的。但要注意的是,sar 命令自己运行时会产生相当数量的读写,因此最好在没有工作量的情况下运行sar 统计,看看sar 对总的统计数字有多大的影响。

AIX 环境下,iostat 和sar 位于文件集bos.acct 中,是基本系统(Base Operating System) 的一部分,在缺省安装情况下无需进行任何配置或任何额外包安装。

Linux 环境下,iostat 和sar 包含在sysstat 包中。sysstat 是Linux 系统中的常用工具包。不同的Linux 系统或不同的硬件平台,安装包名字和具体命令可能会有微小差异。清单1为一个在RHEL5.3 上安装sysstat 包的例子。

清单1:在RHEL5.3 上安装sysstat 包

在AIX 系统上监控磁盘I/O 状况

清单2 与清单3 是在一个负载较重的AIX 节点上运行iostat 和sar 的执行结果,每个命令时间间隔设定为10 秒,总共执行3次。

清单2:在AIX6.1 系统上利用iostat 查看磁盘I/O 负载

主要字段含义如下:

% tm_act 表示物理磁盘处于活动状态的时间百分比,即磁盘利用率。

Kbps 表示以KB 每秒为单位的传输(读或写)到驱动器的数据量。

Tps 表示每秒物理磁盘的I/O 次数。

Kb_read 在设定时间间隔内读取的数据量,以KB 为单位。

Kb_wrtn 在设定时间间隔内写入的数据量,以KB 为单位。

清单3: 在AIX6.1 系统上使用sar – d 报告磁盘I/O 信息

# sar -d 10 3

AIX node001 1 6 00CAA4CC4C00 08/19/09

System configuration: lcpu=32 drives=226 mode=Capped

04:34:43 device %busy avque r+w/s Kbs/s avwait avserv

04:34:53 hdisk1 52 0.0 26 1645 0.0 28.3

hdisk2 18 0.0 8 8614 0.4 73.5

hdisk3 92 0.1 72 38773 28.5 105.1

04:35:03 hdisk1 62 0.0 34 2133 0.0 30.7

hdisk2 20 0.0 10 9855 0.4 84.2

hdisk3 98 0.1 74 39975 24.4 115.7

04:35:13 hdisk1 62 0.0 33 2019 0.0 32.5

hdisk2 23 0.0 11 11898 0.4 67.4

hdisk3 97 0.0 80 40287 13.7 97.4

Average hdisk1 58 0.0 31 1932 0.0 30.5

hdisk2 20 0.0 9 10122 0.4 75.0

hdisk3 95 0.1 75 39678 22.2 106.1

相关文档
最新文档