存储 频道

IO系统性能之二:缓存和RAID如何提高IO

  四个性能指标的变化

  IO响应时间(IO Response Time)

  在任何时候IO响应时间值得都是单个IO的响应时间,因此,不管磁盘是否组成了磁盘阵列,它的IO响应时间应该都是一样的。从前面的计算中我们可以看到,如果IO响应时间在10ms左右的话是很正常的,但是当IO响应时间比这个值超出太多的时候,你就要开始注意了,很可能就意味着此时你的磁盘系统已经成为了一个瓶颈。

  IOPS

  综合上面两个部分的讨论我们来估算一下阵列下的磁盘总体IOPS,在这里我们先假设组成阵列的单个磁盘的随机读写的IOPS为140,读写缓存命中率都为10%,组成阵列的磁盘个数为4。

  因为不管是那种阵列,磁盘的读取性能都是所有磁盘之和,所以可以得出下面的读取IOPS:

  read IOPS = disk_IOPS/(1-read_cache_hit_ratio)*disk_num = 140/(1-10%)*4 = 622

  而写入性能就完全不一样了,根据上面的讨论我们可以得出下面结论:

  RAID0: 1 IO request => need 1 actual IO on disk
  RAID1: 1 IO request => need 2 actual IO on disk
  RAID5: 1 IO request => need 4 actual IO on disk
  RAID6: 1 IO request => need 6 actual IO on disk

  由此我们也可以计算出写入IOPS估算公式:

  RAID0 write IOPS = disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num = 140/(1-10%)*4/1 = 622
  RAID1 write IOPS = disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num = 140/(1-10%)*4/2 = 311
  RAID5 write IOPS = disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num = 140/(1-10%)*4/4 = 155
  RAID6 write IOPS = disk_IOPS/(1-write_cache_hit_ratio)*disk_num/acture_IO_num = 140/(1-10%)*4/6 = 103

  实际上从通过上面的计算方法我们还可以估算当给定一个要求的IOPS的情况下,估计下使用各个阵列级别所需要的磁盘的数量。当然我们上面的计算方法只是一个估算,我们忽略很多其他的因素,得出的只是一个大概的数值,不过在实际的应用还是有一定的参考作用的。

  本篇最后附送一个计算磁盘系统IOPS的网站――wmarow’s disk & disk array calculator,这个网站提供的计算公式还考虑了诸如阵列条带大小以及主机方面的因素,很有参考价值,至于怎么选择合适的条带大小,以后还会撰文解释。

  传输速度(Transfer Rate)/吞吐率(Throughput)

  实际上估算除了随机读写的IOPS也就知道了随机读写的吞吐率。对于顺序读写的呢,还是跟前一篇所讲的一样,主要受限于磁盘的限制,不能再拿IOPS来衡量了。

  random_throughtput = random_IOPS * IO_chunk_size

0
相关文章