取消
搜索历史

    新到IBM DS8800高端阵列之性能测试

    来源:存储网 2012-11-05 17:56:00 磁盘设备

    某客户新到一台DS8800,暂时还没有应用要上线,因此临时拿来做了一番测试。

    测试目的:测试在常见的使用场景中DS8800的性能,以便为未来的生产环境选择一个性能较高的存储配置。

    DS8800配置:4-way p6+ dual controller,128G data cache,80块900G 10K SAS disks,2块8口8Gbps host connection adapter。

    测试机:P780 lpar,8C/32G,2块4Gbps HBA,AIX 6100-07-04,SDDPCM 2.6.3.2,每个存储盘4条链路。

    测试软件:fio 2.0.9,参数如下

    ———————————-

    [global]

    bs=8k

    rw=randread

    ioengine=sync

    runtime=300

    direct=1

    iodepth=1

    group_reporting

    ramp_time=6

    [test]

    filename=/dev/rhdisk2

    size=360G

    numjobs=20

    ————————————

    DS8800的磁盘默认iodepth为20,fio使用iodepth=1参数;使用sync ioengine;每次测试运行6分钟;对裸盘或者裸逻辑卷(LVM STRIPE)测试。

    分别测试了顺序读写和不同io大小的随机读写(读/写/读写4:1),每个测试跑3遍,然后取平均值。测试过程中,磁盘压力都是满的,CPU大量IOWAIT。

    测试了使用不同RAID(只支持RAID6/RAID5/RAID10)配置,来自单个RANK的磁盘、4个来自单RANK的磁盘做LVM STRIPE(16K条带化)后的逻辑卷、来自4个RANK组成的EXTPOOL做rotateexts划分的磁盘,4k~256k不同block size,这几种情形分别组合的场景下的读写性能。各组合场景如下图表所示(图右边blocksize没有列完整,4k~256k):

    DS8800配置上,用了4个ArraySite建RAID6 Array,4个 ArraySite 建RAID5 Array ,2个 ArraySite 建RAID10 Array,根据测试需要分别建ExtPool,4条4Gbps Host Connection。

    测试结果做成图表如下:

    根据图表,有一些“显而易见”的结论:

    1、根据顺序访问的性能图,DS8800的顺序读最大IOPS约为83000,顺序写最大IOPS约为65000,平均延迟不到1ms,应该是写存储cache的值。

    Single-RANK和多个Single-RANK+LVM STRIPE这两种情形下的顺序读写IOPS、延迟非常接近;但是多RANK POOL STRIPE的情形下,顺序读和写的IOPS却只有另两种情形的一半,同时平均延迟也降到一半,为什么呢?

    不同RAID配置下的顺序读写IOPS和延迟几乎没有差别。

    2、 根据随机读的性能图 ,随机读的最大IOPS不到7000,平均延迟最大不到13ms。

    Single-RANK和多个Single-RANK+LVM STRIPE这两种情形下的各种block size的IOPS表现比较相似,在16K block size下,随机读最大IOPS都达到5000以上;但是多RANK POOL STRIPE的情形下,大部分block size下的随机读IOPS下降到另两种情形的一半以下,IOPS最高的是RAID6配置下的64K block size的情形,不到2800,仅为相同block size下最高值的53%,同时平均延迟也较低,为什么?

    RAID6与RAID5配置下的随机读IOPS差别很小;但是RAID6比RAID5的平均延迟低,最大的相差一倍;RAID10配置下的随机读IOPS最好,特别是LVM STRIPE或POOL STRIPE的情形下,最大的提高了一倍,16K block size下提高了30%多;同时RAID10配置下的各情形的平均延迟是最低的。

    3、根据随机写的性能图,随机写的最大IOPS不到4700,平均延迟最大达到了28ms。

    Single-RANK下的随机写IOPS最差,不到另两种情形下的一半,甚至在三分之一以下;多RANK POOL STRIPE配置和多个Single-RANK+LVM STRIPE下的IOPS相差较小,但是在RAID5配置下前者要比后者高20%~30%。

    RAID10配置下的IOPS最高,RAID5次之,RAID6最低;RAID10下的平均延迟最低,另两种RAID配置下都有部分block size下的平均延迟过高;其中RAID6和RAID5配置下,Single-RANK下的4k、8k、16k block size下和多个Single-RANK+LVM STRIPE下的32k、64k block size下的平均延迟,均超过了13ms(一般OLTP应用要求最大延迟在20ms以下)。

    ———————————————-

    汇总如下图(3最差)

    高端存储全用RAID10我个人觉得是完全值得的。RAID10在各种情形下性能完胜,就是多费点磁盘。除了SDD,现在SATA盘和SAS盘都已经是白菜价了吧。不止是性能,相比常用的RAID5,磁盘数据重建时间降低,允许同时损坏的磁盘增加(当然,不能一个镜像对的2块盘同时坏…)。现在单盘容量不断提高,测试DS8800存储用的就是较大的900G 10K RPM磁盘,坏盘被热备盘替换时数据重建时间只会越来越长,万一在这期间又出现坏盘,将可能会威胁到数据安全。RAID5的数据重建时间更长,因此在单盘容量较大时,RAID6是很有必要的,虽然这么做损失一部分随机写性能(在本测试中,只有在Mutil-RANK Pool Stripe配置中RAID6比RAID5损失约30%的随机写性能,另2种存储配置下几乎无损失)。

    Mutil-RANK Pool Stripe 或许对于大多数的应用场景是最简单的较高性能配置,优势在于随机写,IOPS最高,延迟最低,但是其随机读IOPS却比另2种存储配置低至一半左右;相比较而言,Multiple Single-RANK & LVM Stripe配置中的随机写IOPS与前者相当,随机读IOPS好很多(虽然其随机读的延迟稍高,但是仍属可接受范围以内)。

    因此,在本测试结果的讨论范围内,在随机写要求较高的场景,比如oracle redolog,同时使用RAID10和Mutil-RANK Pool Stripe配置;而随机读要求较高的场景,比较oracle data file,使用Multiple Single-RANK & LVM Stripe配置。

    PS:Multiple Single-RANK & LVM Stripe配置的系统管理工作量会稍大一些。

    (文章为作者独立观点,不代表Stor存储网立场,版权疑问请联系客服。)
    关于我们| 隐私条例| 版权申明| 联系我们

    2018-2022 Copyright © Stor.com.cn