I/O请求的队列指标
当磁盘I/O请求的数量超过I/O设备的处理能力时,或者当磁盘调度算法需要累计一定的I/O请求时,都会导致I/O请求的排队。I/O请求的队列长度常用来发现存储设备的读写瓶颈。其中用到比较多的两种指标分别是:Average Queue Length和Average Busy Queue Length。这两者常用于描述当前存储设备的使用状态。
Average Queue Length是指存储设备一段时间内的平均队列长度,也就是求得一段时间,不同观察数值的平均值。
Average Busy Queue Length是指存储设备处于忙碌状态时的平均队列长度,也就是求得一段时间内,队列长度不等于0的观察点的均值。
这两种指标的计算过程示意图如下所示:
一个时间窗内的观察点的状态
图中的横轴表示一个时间窗,横轴上的每个小箭头都表示一个观察点。纵轴表示在每个观察点时刻,I/O请求的队列状态。此时Average Busy Queue Length 以及 Average Queue Length 的计算公式如下:
Average Queue Length = 6 + 0 + 0 + 4 + 4 + 4 + 0 + 0 + 0 + 0 ) / 10 = 1.8 (10个观察点数据的均值)
Average Busy Queue Length = (6 + 4 + 4 + 4) / 4 = 4.5 (非0观察点数据的均值)
当 Average Queue Length 与 Average Busy Queue Length 的值相差较多时,表明I/O请求比较密集,有突发性特征。在做性能分析时,结合两点数值,可用于了解I/O请求的到达均匀程度。两者相差越大,请求的到达越密集。一般来讲,不同硬盘造成性能瓶颈时的队列长度也不同[1],例如:
(1)FC/SAS 15000 rpm的磁盘,queue length < 12 一般来说问题不大
(2)SATA/NL-SAS 7200 rpm的磁盘,queue length < 6 一般来说问题不大
[1]https://community.emc.com/message/641733#641733