有没有人了解存储设备的性能测试阿?
要准备一个存储设备的性能测试,应该从哪里下手呢?对硬件测试一头雾水啊,请各位大牛指教。 如果要做流媒体之类的服务器,最好能够把流量进行负载均衡。在负荷比较小的情况下,连续读写的速度还是可以接受的,但是目前你的速度也不是很快。如果是流媒体的话,用户多的时候会产生非常多I/O读写请求,多的I/O读写请求会导致两个问题,硬盘要接收非常多的寻道命令,因为每次请求的文件存放于硬盘不同的位置,所以硬盘需要花费很多的时间在寻址和定位上。第二个这时候进行连续读写测试的话,这些连续的指令也不得不和其他任务产生的I/O一样进行排队,所以连续读写测试的速度会大幅下降属于正常。
远景看来,SATA 2模式采用了NCQ技术,所以也会对读写比较繁重,I/O比较多的情况有着不少的性能提高,但是这个玩意暂时还用不上。因为MSA 1500的硬盘柜还暂时不支持 SATA 2 。SCSI硬盘和SATA硬盘性能的对比,SATA的读寻址时间是8ms,平均延迟是4.16ms。而10000转300GB的SCSI硬盘的平均读寻址时间是4.7ms.平均延迟是3ms。这两个东西在多I/O的环境下差别还是蛮重要的。
在有大量持续I/O的情况下,进行磁盘读写性能的测试,在此情况下,测试I/O都将与所有应用的I/O一起排队,所以,测试出的指标很低,是非常正常的事情。其测试数值并不能代表磁盘真正的性能,也不能说明什么问题。
但是,无论上述哪种存储,在这样的应用情况下,当持续IO达到一定量以后,用测试软件测试,其读的指标都很低。(一般都只有几M),但是,这个时候如果用应用去测试,你会发现应用依然很正常。--对于流媒体来说,就是播放一样很流畅。
所以,重要的不是测试的数值,而是你应用的实际表现。
如何提高在流媒体这种类型下的磁盘性能, 我有如下几个建议:
1:加大条带化的带区尺寸(STRIP SIZE),如:从默认的8K调整到64K。
2:进行磁盘碎片整理, 将零碎的磁盘文件整合为相对连续的空间。 减少磁头的寻址动作。
3:在文件整理后,将磁盘阵列的“预读”功能开启 (SUPER READ、或PX READ等),提高缓冲命中率。
4:在一些存储上,还可以通过提高BUFFER SIZE,来提升读性能。
至于用RAID 0这种方式,个人认为对楼主的应用并没有帮助。 RAID0 +1更适宜I/O不频繁,但每个I/O吞吐都很大的情况。 例如:持续大量的备份(25M/S)、视频编辑(100M/S)、科学计算等应用。 而在流媒体这种小流量,大I/O的情况下,RAID 5应该更为适合。
负载均衡机制,将负载尽可能均匀的分配到多个磁盘卷上,这样,可大幅度增加系统的承载人数。 用最通俗的话说,就是要让所有磁盘都动起来! 而不是仅仅有部分磁盘在做运动。
用SATA硬盘的确性能要差一块,:
1,使用专用的流媒体服务器软件,对RAID中的striping size进行优化,(程序-hp sytemtols- acu 逻辑盘的参数中设置。)
2,因为这里大部分应用为R,故建议把 RAID中的cache 90%给读(程序-hp sytemtols- acu 控制器设置。)
3,一般我接触的电信用户做VOD的,大多用的LINUX,个人觉得用LINUX可能要快一些。:)
测试工具测试的结果不一定准确,何况你还是在有负载的情况下。
STRIP SIZE用最大可选的,
Cache分配的话,Write分配少一点,毕竟只在上传的时候才用得着,绝大部分都给Read把。
RAID10也完全用不着。浪费一半空间,对于流媒体来说性能不会有多大的提高。
还是不要做成一个RAID5,一般应用24个硬盘做成两个或者三个RAID5比较好。
一般对于一个系统来说,raid5不要超过12个硬盘,另外需要加大你的cache,现在内存也便宜。对于网络而言,你需要加大带宽,减少系统cpu利用率,所以普通的网卡可能也不能负担。
cache参数对磁盘阵列性能和可靠性的影响
下面所说不一定适用某些磁盘阵列。
1、调整全局cache参数
1、1 start and stop cache flush:这两个参数影响控制器处理cache区域的操作,在这中情况下是按照先进先出的原则往磁盘上写数据。这只对打开了写cache的情况下适用。
在一般的情况下,在决大多数时候start的值大于stop的值。但是也有少量的情况下start等于stop的值。如start=stop=80%意味着,控制器的cache将不允许超过80%的部分用于写cache操作,在这种情况下,控制会尽可能的将80%的cache做为写cache使用,这对应用而言,写的性能可能是比较,但是在数据的可靠性保护方面可能不是很好。如果从数据保护的角度来看,使用比较小的start和stop值可能是比较好的。(针对cache掉电等意外情况下,cache中丢失数据的多少来考虑)
1、2 cache block size参数
如果IO操作均小于cache block size的大小,那么每一次IO写到cache中,都会浪费cache的使用情况(对于一个cache block中没有使用的部分,不能用做其他的IO)。如果IO操作均大于cache block size,那么完成一次操作会使用更多的cache block。
2、指定卷上面的cache参数
2、1 read cache:允许服务器的读操作从控制器的cache中读取所需要的数据,如果数据不在cache,控制器从磁盘中读取数据并存放在cache中,知道cache flush。
2、2 read-ahead(prefetch):允许控制器从磁盘上读取数据到cache中的时候,读取附加的一些数据到cache中。在下一次IO可能会使用到这些数据,这样在性能上可能会有所提高。
2、3write cache:数据不直接写到磁盘,先写到cache中。不一定write cache能够提高性能。如在持续的大数据量的时候write cache可能会不关掉cache慢,因为会频繁的出现cache flush。
2、4 write cache是否使用电池保护:如果不用电池保护写cache,可能会出现数据丢失。
2、5 write cache mirror:可靠性提高,但是性能会降低。
由于读、写均共享cache,因此需要整体考虑用于读、写cache的大小,以及对整体性能的影响。 学习了 很详细 呵呵 好料 IOZone专门测这方面的性能吧 !! 很好,
页:
[1]