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.
应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。
|