//为了解决cpu与输入输出(键盘、显示器)设备速度不匹配的问题,设计了IO缓冲区
//标准IO提供三种类型缓冲模式: 按块缓存,按行缓存和不缓存
//按块缓存也称为全缓存,即在 填满缓冲区后才进行实际的设备读写 *** 作 ;
//按行缓存是指在 接收到换行符"\n"之前,数据都是先缓存在缓冲区的
//不缓存,就是允许 直接读写设备上的数据
从前面的计算中我们可以看到,如果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 diskRAID1: 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
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,这个网站提供的计算公式还考虑了诸如阵列条带大小以及主机方面的因素,很有参考价值,至于怎么选择合适的条带大小,以后还会撰文解释。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)