一个PCIe闪存卡测试引发的思考

2013年10月17日存储在线、ZDNet企业解决方案中心联合发布:基于闪存(Flash)技术的固态盘(SSD)成为存储市场上的热点话题已有时日,但在中国的传统企业用户中,也要面对“叫好不叫座”的尴尬。原因当然有很多,其中最重要的一条,还是同样容量下,比硬盘高得多的价格。加之中国的传统企业用户通常比较“羞涩”,所以我们看到出来分享固态盘使用心得的多是互联网企业,较大型的传统企业都少见。

在一个偶然的机会,ZDNet企业解决方案中心首席分析师张广彬(新浪微博@狒哥)和DOIT传媒副总编彭彦明(新浪微博@阿明1977)结识了中国铁道出版社的刘波。在我们的印象中,还没做好把相对高端的PCI Express固态盘(PCIe闪存卡)与铁道出版社这样的企业联系起来的思想准备——恕我们无知,主要还是对固态盘在中国传统企业用户中的接受程度不敢乐观。因此,当我们得知刘波已经用生产环境中的设备体验了PCIe闪存卡相对老式磁盘阵列的巨大性能提升时,不由得产生了巨大的兴趣。

以下是刘波的分享文章,红色字体的段落是编者的注解……一定要结合起来看哟!

本文通过对MEMBlaze Q520H型PCIe接口固态硬盘与EMC CX3-20型SAN传统磁盘存储阵列进行的对比测试,提出了使用PCIe接口固态硬盘作为存储介质,提高SQLServer数据库性能的一种技术途径。

MEMBlaze Q520H型PCIe接口固态硬盘

EMC CLARiiON CX3-20存储阵列

编者注:Q520H是国内初创企业MemBalze公司的上一代产品,而CX3-20又要早上个四五年。在三年恨不得当三十年过的IT行业,相差四五年之间的产品比拼,快赶上“关公战秦琼”了……不过,这种情况在用户考虑系统升级方案的时候,却是很有可能出现的。这种不同产品品类之间“非对称”对比的另一前提在于,用户只想要更高的单机数据库性能——如果离不开共享存储和基于SAN的高级软件功能,全闪存阵列或混合阵列更为合适。

一、 测试设备

在一台服务器中同时架设Q520H型PCIe接口固态硬盘与EMC CX3-20型SAN传统磁盘存储阵列,分别对存储设备的指标进行测试。其中,

1. 服务器型号为:DELL R900;

2. 服务器配置:Intel Xeon E7320 4颗CPU,主频2.13GHz;内存64GB,4个PCIe x8接口;

3. 固态硬盘加速卡型号:MEMBlaze Q520H型PCIe接口固态硬盘,插入PCIe x8接口;

4. 存储阵列型号:5块光纤接口硬盘RAID 5模式构成的4Gb 光纤通道EMC CX3-20存储阵列;

5. 配置软件:Windows 2008 Server 64位操作系统、SQL Server 2008 64位数据库

编者注:正如作者所言,包括服务器、存储阵列、操作系统和数据库软件在内的整个现有方案,部署于2008年。回想那时尚可担纲主力的R900,提供的还是PCI Express 1.1插槽,而去年基于至强E5平台的服务器就已达到PCI Express 3.0,短短四年间换了两代,真有恍如隔世之感……

如此的老平台对Q520倒不是大问题,因其使用的是PCI Express 1.1 x8接口,与服务器正好匹配,单向带宽2GB/s。

真正老态尽显的是CX3-20。作为EMC在2006年推出的CLARiiON CX3中端存储家族的一员,CX3-20最多支持120个FC硬盘,4-12个4Gb/s FC主机端口,但4Gb/s FC磁盘端口只有2个,因而磁盘带宽不会超过800MB/s。

那么,这是一场注定不公平的对决么?


PCIe闪存卡开路先锋Fusion-io早期的案例:对那些使用SAN,只为获得大量硬盘堆叠IOPS的用户来说,以PCIe闪存卡替代,是非常好的选择。

二、 测试方法

使用CrystalDiskMark3_64位软件,分别测试连续读写、随机读写,2种模式下的传输率,测试5次,取平均值,并推算出IOPS,另选择了HD_Tune_Pro测试软件进行参考对比,以排除测试软件误差。同时进行了SQL Server2008数据库实际使用测试。

为排除操作系统缓存的干扰,测试中关闭了操作系统的写缓存功能。

编者注:这个测试最有争议的部分来了,那就是测试软件的选择。CrystalDiskMark和HD Tune Pro都是用来测消费类设备如SSD的,怎么能测这些企业级存储产品呢?

这一点我原则上同意,但不赞成持全盘否定的态度。这里先从技术上不太“严谨”的探讨一下,文尾再说说我的看法,也是刊出本文的价值所在。

一方面,从原理上,存储产品的测试,企业级产品和消费类产品、系统级产品(如磁盘阵列)与部件级产品(如硬盘),没有本质的区别。譬如说,IOmeter测试消费类产品和企业级产品,都是可以信赖的;存储性能委员会(Storage Performance Council,SPC)在存储系统级Benchmark规范SPC-1/2的基础上,开发出了面向存储部件(磁盘、SSD、HBA/RAID卡等)的SPC-1C/2C;

另一方面,CrystalDiskMark、HD Tune Pro毕竟不是IOmeter,它们可以说是专门为消费类产品设计的,没有考虑到外部存储系统的一些特性。以我个人以前使用同类软件的经验来看,它们对内置存储和简单的直连存储设备(包括PCIe闪存卡和USB存储)测试的结果一致性比较好,但对外部存储系统的测试结果则往往难以解释;

更不要说企业级产品都要测持续性能,SSD还包括抖动、延时、损耗……的考察,这些也不是相对简单的消费级测试软件可以承担的。

那么,这不是对老存储系统更不公平了么?莫急,我们可以对看来不太可信的测试结果进行强力“补偿”,重点仍然在于最后解释用户这么做的合情性……so请性急的看客耐着性子往下看……

三、 测试结果

1.CrystalDiskMark3_64位软件测试结果

2.HD_Tune_Pro软件测试结果

3.SQL Server数据库备份还原测试

磁盘类型

备份时间()

备份传输率(MB/s)

还原时间()

还原传输率(MB/s)

RAID5光纤盘

 352.804

89.972

470.763

67.427

PCIe固态盘

119.634

265.331

84.601

375.204

编者注:正如上一段点评所指出的,CrystalDiskMark和HD Tune Pro测试PCIe闪存卡的成绩还算靠谱。以CrystalDiskMark来说,Q520H顺序读(1147MB/s)超过了接口理论带宽(2GB/s)的一半,而CX3-20就有点过低了。虽然只配5个FC盘,但即使配满了120个硬盘,实际带宽也超不过800MB/s。这还是两个4Gb/s FC磁盘端口全用上的情况,如果只用一个,那CX3-20的带宽连400MB/s都到不了。

这也不能怪CX3-20,因为传统磁盘阵列堆那么多硬盘,不是为了凑顺序访问带宽,而是拼随机访问的IOPS(I/O per second,每秒I/O操作数)。EMC曾经给出过15000RPM(15K RPM)硬盘在CLARiiON这样的中端存储系统中随机访问性能的经验值——大约200IOPS。照这样算的话,5个盘的读IOPS可以有1000,两款软件的随机测试成绩有点过低了。但即使按1000算,比Q520H也还差很多。


EMC官方发布的CLARiiON CX3应用性能,注意CX3-20满配的OLTP性能,单位是TPM,即每分钟交易数,折合成每秒I/O的话……

第三项是真实应用中的测试,SQL Server备份的速度比EMC官方发布的CLARiiON CX3应用性能指标要低不少。一则官方数据中的CX3-20是满配,硬盘数24倍于本文配置;二则看起来刘波的测试中备份源与目标都是同一设备(Q520H或CX3-20),既读又写,备份速度肯定大打折扣。

解释的差不多了,看结论……

四、 数据分析

1. 连续传输率比较

读比率:PCIe固态盘/RAID5光纤盘=1147/205.9= 5.57

写比率:PCIe固态盘/RAID5光纤盘=647.3/224= 2.89

结 论:PCIe固态盘比RAID5光纤盘连续存取传输率有大幅提升。

2. 随机读写传输率比较

(1)512KB测试块:

读比率:PCIe固态盘/RAID5光纤盘=952.9/55.01= 17.32

写比率:PCIe固态盘/RAID5光纤盘=644.4/96.99= 6.64

(2)4KB测试块:

读比率:PCIe固态盘/RAID5光纤盘=25.67/0.951= 26.99

写比率:PCIe固态盘/RAID5光纤盘=83.97/12.71= 6.61

结 论:PCIe固态盘比RAID5光纤盘的随机存取传输率有大幅提升,与连续存取传输率的提升比较,性能指标提升的幅度更大,最高达26.99倍。

3.连续读写与随机读写的差异比较

(1)PCIe固态盘差异:

连续传输率对比512K随机传输率:

读比率:1147/952.9=1.20

写比率:647.3/644.4=1.00

连续传输率对比4K随机传输率:

读比率:1147/25.67=44.68

写比率:647.3/83.97=7.71

(2)RAID5光纤盘差异:

连续传输率对比512K随机传输率:

读比率:205.9/55.01=3.74

写比率:224/96.9=2.31

连续传输率对比4K随机传输率:

读比率:205.9/0.951=216.51

写比率:224/12.71=17.62

结 论:无论是对读操作还是写操作,对于连续传输传输率与随机存取传输率的性能差异,PCIe固态盘都比RAID5光纤盘的性能落差都有所收窄,并且这种性能落差的收窄幅度是与数据块大小成负相关。即数据块越小,相对于RAID5光纤盘而言,PCIe固态盘的性能提升越明显。对于4K数据块读操作,性能提升最高达到4.85倍。

编者注:虽然在测试软件的选择和部分测试结果上存在着不同程度的争议,Q520H与CX3-20在性能上的差距可能被拉大了一些,但上述分析结果的方向还是正确的,符合SSD随机访问能力优异,硬盘适合顺序读写的认知。所以,随机访问的数据块越小,SSD优势越明显;数据块越大,硬盘的落后幅度就会小一些。

换句话说,刘波用不规范的测试手段,得到了总体正确的结论。那么,这对我们有何启发?

五、总 结

连续传输率和随机传输率是衡量存储系统的重要指标,这2个指标的提高对于提升数据库的访问性能具有直接作用。从以上测试结果说明:

1. PCIe固态硬盘在这2个指标上都比SAN光纤传统硬盘有大幅度提高,并且各指标表现更加均衡。

2. 相对传统机械硬盘存储而言,小数据块随机传输率的提升尤为显著。小数据块随机传输率的提升会提高存储设备的IOPS指标。而IOPS是任何以数据库为支撑的信息系统最为关心的指标之一。对于传统机械硬盘,这个指标难以大幅度提高的,即时有所提高,代价也相对昂贵。通过发挥PCIe固态盘存储介质的优势,会直接提高数据库的事物处理能力,对于提高OTLP类应用的并发处理能力,是高效而低成本的性能提升手段。

3. 对于固态硬盘而言,由于随机传输率的性能与连续传输率的性能呈正相关,并且连续传输率与随机传输率的性能落差已大为缩小,因此连续传输率将成为反映固态硬盘性能的主要代表指标之一,而连续传输率指标将是由固态硬盘的内部结构及接口速率决定,因此考察固态硬盘的性能可以重点观察固态硬盘的接口速率及读写延迟指标。

4. 测试还证明,吞吐量的提升将会缩短数据库备份还原时间,这会压缩系统维护时间窗口,提高系统在线服务能力。

编者注:对上述结论,我们首先有一些补充意见:

1. 随机访问性能是基于半导体技术的闪存相对机械硬盘最大的优势所在,不要说老旧的CX3-20,一块优秀的PCIe闪存卡,IOPS性能优于配备了几百个高转速硬盘的传统磁盘阵列(或曰全磁盘的存储系统),早已不是天方夜谭;

2. 相对而言,硬盘的顺序读写能力不算差。以前受限于SAS/SATA接口的带宽限制,SSD的顺序读性能至多是硬盘的两三倍,现在有了PCI Express 3.0的支持,一个PCIe闪存卡的顺序读性能可以十倍于硬盘。但是,大量的硬盘堆叠起来,只要存储系统的带宽足够,是可以与SSD一争高下的。加上硬盘在容量和成本上的优势,用磁盘存储系统来做备份,还是更好的选择。

这么说来,刘波的测试不过是证明了已有结论的事实?那为什么还要做这“无用功”呢?

或许恰恰说明了闪存产品在中国的传统企业市场上接受度未如人意的原因。虽然在大小厂商的发布活动上,动辄可见SSD或闪存阵列I/O性能“10X”、“30X”乃至“100X”于磁盘或磁盘阵列的对比,可能也没有夸大,但一则面向用户宣传的力度还不够,二则用户对厂商自说自话的宣传也心存疑虑。在缺乏可信的第三方测试数据支持的情况下,用户自己测试是既负责又无奈的行为。

可能有人会说了,用户自己测试可以呀,多搞些实际应用环境中的测试,不要这么“小儿科”嘛……可是,用户的本职工作是服务好所在企业的应用,没有成为专职测试人员的义务,大多数人也没有这条件,不信请看:

3. 本文中在SQL Server环境中进行了测试,算比较贴近该用户的应用。不过,我们知道,要检验存储设备在SQL Server环境中的性能,主要考察的应该是随机访问(IOPS),复制/恢复属于次要场景。但是,像SQL Server这样的商业数据库,专门设计的测试软件并不多,现属戴尔的Toad for SQL Server在高级版本里提供了测试工具,一则需要购买软件许可,二则配置复杂,不能指望大多数企业用户为了测试存储的性能,下这么大的功夫在本分以外的工作上。针对Oracle数据库的Orion是免费的,但也需要相当的测试经验才能使用。至于编个脚本进行针对性的测试,就更是对用户的苛求了。

这一点同样可以解释该用户使用CrystalDiskMark和HD Tune Pro,而不是IOmeter来进行Benchmark测试。作为一款相对专业的测试工具,IOmeter可以调整很多参数,定制测试模型,也意味着更难上手;CrystalDiskMark和HD Tune Pro则相反,测试模型虽不透明但贵在简单,出结果快且直观,拿来就用很是方便。

这也引发了关于“实际用户场景测试”的思考。“贴近用户实际应用的测试”一直是ZDNet企业解决方案中心的宗旨,而有时面对“在实际用户环境中测试的结果”这类要求,则令我们颇感为难。须知用户是不会贸然直接在生产环境中使用新产品的,据说即使是百度这样的互联网用户,其测试部门也拿不到生产部门的数据集和代码,只能以尽量贴近的脚本来模拟。这一步通常属于验证性的,因为用户显然不能对厂商的宣传照单全收,特别是在大规模的采购部署之前,一定要先对性能和兼容性等方面有个基本的把握。至于在用户应用环境中的实际表现如何,那就属于应用案例的范畴,虽然数据更准确也更有“可信度”,却不能强加到产品测试的环节啦。

在磁盘阵列的时代,不同厂商的同代产品之间,性能通常不会有数量级的差别,用户可以将注意力集中在软件功能和对应用的支持上。闪存作为一种颠覆性技术,虽然声势日隆,毕竟用过的企业用户还不算多(尤其在中国)。没接触过的企业不能毫无保留的信任,是对自身负责的表现。在这种情况下,我们第三方测试机构有义务帮助企业级闪存技术/产品的潜在用户,在贴近自身应用的场景中,检验新产品新技术的实际效能。(实际测试者:中国铁道出版社刘波,文中编辑点评:ZDNet企业解决方案中心首席分析师张广彬。)


ZDNet企业解决方案中心联合发布本文:《一个PCIe闪存卡测试引发的思考》