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

某客户新到一台DS8800,暂时还没有应用要上线,所以临时拿来做了一番测试。  测试目的:测试在常见的使用场景中DS8800的性能,以便为未来的生产环境选择一个性能较高的存储配置。  DS8800配置:4-way p6+ dual controller,128G data cache,80块900G 10K SAS disks,2块8口8Gbps ho...显示全部
某客户新到一台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配置的系统管理工作量会稍大一些。收起
参与18

查看其它 15 个回答板凳末端的回答

板凳末端板凳末端系统工程师**银行
专业的测试
银行 · 2014-07-29
浏览3435

回答者

板凳末端
系统工程师**银行
擅长领域: 服务器灾备系统管理

板凳末端 最近回答过的问题

回答状态

  • 发布时间:2014-07-29
  • 关注会员:2 人
  • 回答浏览:3435
  • X社区推广