英特尔710系列SSD最大的特点在于使用了25nm新工艺的MLC NAND多层闪存芯片,而不同于上一代X25-E系列的50nm SLC NAND老工艺单层芯片,本文将深入挖掘新产品贼速度和可靠性方面的表现。
在大型数据中心和超级计算机实验室,你会看到最高端的计算机硬件,这让你瞠目结舌。而在这些环境之中所采用的高性能存储,通常会倾向于基于单层单元(Single-Level Cell,SLC)闪存技术的固态硬盘,因为其强大的性能和可靠性。
在固态存储的初期,基于多层单元(MLC)NAND的固态硬盘被认为并不适合很多服务器的写入密集型工作负载。此外,MLC的写入速度比SLC单元要慢。并且,在存储过程中,MLC闪存要产生更多的能耗(这对于可能要托管成千上万个驱动器的数据中心是非常重要的考虑因素)。
在应用层大量部署X25-Es SSD
因此,很多IT管理者都倾向于为应用程序选择基于SLC的驱动器,数据安全和速度是最重要的考虑。
然而,SLC也存在几个问题。首先, SLC在一个存储单元仅贮存一个bit数据,MLC在一个存储单元贮存二个甚至多个bit数据。你可以看到,多层单元技术更适合于很多现在具有较高容量的 固态硬盘。相比之下,英特尔的X25-E,最高端容量仅为64GB。另一个是价格问题,相同的64GB旗舰版售价高达800美元,相当于每千兆字节存储价 格为12美元以上。
显然,如果制造商能够想办法在不影响企业数据完整性的前提下,发挥MLC NAND的优势,那么企业自然会摒弃较大的SSD,或者将它们作为分层存储子系统的缓存设备使用。
英特尔肯定也是这么想的,该公司完全停止了X25-E的生产,转向新的SSD 710,这昭示着从昂贵的SLC到MLC闪存的转型。
英特尔的新数据中心驱动器采用了MLC闪存技术,该公司称它带来了与主流SSD 320完全不同的体验。 Intel新的企业级SSD中的NAND被称为“高耐久性技术(HET)MLC”, 它平衡了MLC的容量优势和SLC闪存的写入性能。
从SLC转移到MLC必然会造成一些问题。从大方向来看,这是值得的。根据iSuppli的数据显示,当你将SLC生产的技术障碍和规模经济的因素结合来看时,SLC NAND的价格溢价要比MLC高出四倍。基于MLC的驱动器对于资金紧张的中小企业或者大型数据中心来说,更加物美价廉。
让我们看看每GB的价格差异,X25-E刚开始推出时售价为平均每GB14美元。两年多以后,也就是英特尔公司宣布停止生产X25-E后,售价下降到约每Gb 11美元,这仍然比新的SSD 710的价格高出40%。然而,这还不仅仅是关于价格的问题。
消费者导向的固态硬盘仍然在每GB 2美元附近徘徊,因此,售价为每GB 6.5美元的基于MLC的固态硬盘应该还是会让消费者有些顾虑。但是,Intel SSD 710产品中的HET MLC声称能够提供比廉价消费者级MLC高出30倍的写入次数。如果我们假设25 nm MLC NAND的寿命为3000次P/E,HET MLC可以达到90000次。对于那些现在买不到X25-E而只能选择SSD 710的IT经理来说,MLC能够提供向SLC那样的写入次数无疑让他们欢欣鼓舞。与此同时,大幅下跌的每GB价格也将吸引那些因为买不起SLC闪存而使用磁性存储的企业。
剖析SSD 710:新旧功能对比
虽然在技术上来看,这是一个全新的 SSD系列产品,但SSD 710的一切都让人感觉熟悉。事实上,这款面向企业的驱动器与面向消费者的SSD 320如出一辙。两者都采用了基于Intel的PC29AS21BA0控制器10通道架构。当然,不同之处在于710固态硬盘采用了HET MLC,这个技术主要提高了写入速度。除了控制器和NAND,SSD 320和710都能够进行AES-128加密,并通过使用板上电容在停电期间保护数据。
将300 GB SSD 320和200 GB SSD 710摆在一起,很难分辨。
与我们实验室的300 GB SSD 320一样,200 GB SSD 710拥有20个NAND封装,每一个能为驱动器增加16GB容量。虽然每个SSD的PCB从外观上看上去相同,但是该公司的企业级产品提供40%的超量 供给,这是我们看过所有产品中最高的数额。这对于企业环境而言是非常重要的因素,因为增加的超量攻击降低了写入放大,这也会对驱动器的耐久性带来正面影 响。
40%的超量供给听起来已经非常多了,英特尔建议写入密集型应用程序部署更多的超量供给。如果给驱动器的NAND闪存预留额外20%供给,写入次数将额外增加50%左右。HET MLC和大量超量攻击让SSD 710的耐用性比消费者级SSD 320高出33倍。
虽然你可以使用一个公式来计算企业级和消费者级固态硬盘的耐用性,但是这两种类型采用不同的规格。在所有可用P/E用尽后,消费者级固态硬盘(例如 320)NAND单元能够保留数据达12个月之久,而企业级固态硬盘(例如710),只能够保留数据三个月,这是完全正常的,在企业存储世界,替换故障驱动器通常发生在几个小时之内,所以长时间的数据保留并没有必要。
HET MLC:超级MLC还是SLC精简版?
SSD 320: MLC HET MLC
现在是时候对高耐久性技术MLC挑挑毛病了,毕竟这是相当新的技术,而且老实说,存在一些混淆。据英特尔表示,HET提供向SLC一样的写入性能,这是从两种方式来实现的:
1. 裸片筛选(Die-screening)消费者级MLC,提高耐用性
2. 增加页编程周期(tProg)
碰巧的是,这刚好是eMLC的两个特征。换句话说,HET只不过是一个营销术语。在技术层面上,Micron公司告诉我们裸片筛选(从晶圆中筛选出 最好的裸片)可以提高两倍写入次数。但是,该公司声称eMLC耐用性是消费级MLC的六倍。另外的性能增加来自增加页面编程周期,可能增加两到三倍的耐用 性。
虽然裸片筛选似乎是在不影响性能的前提下筛选最佳闪存的一种简单方法(成本也会增加),但是增加页面编程的时间听起来似乎并不那么好。原因在于MLC和SLCNAND之间的差异。
单层单元闪存每个单元存储一个bit数据,这是一个二进制单位系统,要么是0,要么是1。MLC内存每个单元最多可以存储两个bit,所以你要考虑四种状态来代表所有可能的组合。虽然在纸面上看起来整齐划一,但是增加的存储密度会增加成本。
闪存只有这么多的电压容差,你不能简单地将电压乘以规模。相反的,每个状态之间你需要更多的灵敏性,这意味着更多的编程来操控存储在浮栅中的非常精准的电荷量。MLC和SLC内存操作类似,然而,MLC在电荷安置和电荷感应方面需要更多精准度。
随着时间的推移,P/E被慢慢地消耗,决定每个单元的值的读取空间开始“萎缩”,由于:
• 闪存单元氧化降解造成的电荷损失
• 不稳定变成步骤造成的过度编程
• 大量读取或写入造成的对相邻擦除单元的编程
因此,随着时间的推移,驱动器会面临数据保存问题和读取相关的错误。对于SLC驱动器,并不会有这些问题,因为它们只有一个参考点。而MLC内存是完全不同的,这也是为什么增加页面编程周期会对耐用性带来明显影响的原因。
从本质上来讲,需要花更多的时间用于向内存单元发送更精确的电荷,这增加了在较小窗口内写入到一个单元的可能性,从而制造了更大的参考点,扩展了每个单元可以承受的磨损量。最终的结果是在牺牲较少性能的情况下,保证了更高的耐用性。
HET MLC:耐用性到底是什么样?
英特尔公司不会告诉我们其25nm HET MLC到底能够承受多少P/E周期。然而,我们可以使用英特尔最新固态硬盘中的S.M.A.R.T值来计算这个数字。
在所有固态硬盘上,磁盘磨损指数(MWI)是一个S.M.A.R.T.值(E9),它告诉你使用了多少P/E,从100到1,就像汽车的累计里程表。不过,使用这个数值需要几个月的测试才能得出结果,因为它是从100到1来显示。
相比之下,英特尔的工作量计数机则像是汽车上的小计里程表,因为它衡量一段时间内的耐用性。这个数值更加好用,因为它提供了关于磨损更精细的信息, 这样就很容易计算一天内的耐用性。然而,这些工作量计数机是在驱动器已经使用60分钟或者更长时间后,才开始产生的,而在实际操作中,一个小时并不足以让 我们进行精确测量,我们的耐用性值都是基于6小时的工作量。
在你插入驱动器时,计数器就开始计数了,所以如果你想要进行测试,你需要重置计数器,你可以通过smartctl发送0x40指令来实现。
如果你使用的是像CrystalDiskInfo这样的磁盘信息程序,所有S.M.A.R.T.值都是十六进制,这意味着你需要将其转换为十进制。E2 非常独特,因为它是唯一有效到小数点后三位数的,并且它以IEC二进制格式保存。因此,在将E2的原始值转换为十进制后,你需要除以1024来获得百分比。
在我们看测试结果之前,我们需要涵盖一点数学知识:
• 主机写入÷ NAND写入 = 消耗的P/E周期÷ 总P/E周期
• 使用的P/E 周期 ÷ 总P/E周期 = 磁盘磨损指数(100到1)
• 100%连续写入意味着主机写入= NAND写入 (写入放大 = 1)
如果我们采用这三个公式,就可能计算出SSD 710的写入次数(使用SSD 320作为参考点)。
从100%连续写入 (写入放大 = 1)开始,我们看到SSD 710的写入次数大约是SSD 320的4倍到5倍,为了更方便理解,我们将其平均为4.5倍。
之前,我们听到英特尔公司提到其SSD 320产品中的NAND是5000次周期,那么根据该公司对eMLC性能的描述,SSD 710应该为20000到25000次P/E周期。
我们知道了100%连续写入时,磁盘磨损指数的情况,现在我们可以检查具有较高队列深度的随机写入工作负载的写入放大情况。
有趣的是,SSD 710的写入放大更高。然而,在相同时间内,710可以写入320两倍的数据。
也许更重要的是,这两个驱动器的耐用性值都比英特尔声称的值要高,这也显示了JEDEC规范往往低估了真实世界的耐用性。对于相同的随机工作负载,所有SSD 320的擦写周期在不到一年内将被耗尽,而SSD 710可以继续工作三年或更长时间。
测试设置和固件说明
测试结果:Storage Bench v1.0 & PCMark 7
虽然英特尔SSD 710并不是消费者级驱动器,不过PCMark 7和我们自己的Storage Bench v1.0提供了一种快速的方法来检查其存储性能。
SSD 320和710提供的性能规格非常接近,所以它们的测试结果差异并不是很明显。710只是落后了一点点,我们认为这是因为eMLC NAND较低随机写入的固有属性导致的。然而,与Micron的SLC P300相比,英特尔最新企业级SSD远远落后。
在这个对比表中我们还加入了发烧友级别的驱动器,但SSD 710并不是发烧友产品。供应商在平衡性能和可靠性方面做得不错,而且这个驱动器更快更便宜,但是从结果列表来看,并不适用于企业级用户。
测试结果: 4 KB随机和128 KB连续性能
整体衡量标准是信息化的,但是它并没有对驱动器的具体性能特定提供足够的数据。这也是为什么需要研究随机读取、随机写入、连续读取和连续写入的原因。
SSD 710是一个企业级驱动器,这表明它能够在I/O操作负荷的情况下处理高密度工作负载,我们将从队列深度1来测试,以与其他固态硬盘进行基准性能对比。
710的随机读取速率与320类似,但同样的,这并没有给我们惊喜。
SSD 710的指定随机读取速率比320慢了10倍,不过这只出现在高队列深度,当我们回到队列深度1,SSD 710又与SSD 320差不多。
英特尔的数据表也显示出这个企业级产品和消费者级产品具有几乎相同的连续读取/写入性能。虽然这仅适用于较高的队列深度。在只有一个主动I/O操作时,SSD 710只在连续读取中比320高15%,而在连续写入中,两者结果相同。
与P300相比,SSD 710在连续读取和连续写入方面,性能都慢了50%。不过,你也要想清楚,Micron驱动器是否值得这个价格,对于200GB驱动器,网上售价为2000多美元。
测试结果:企业性能
在所有类型的工作负载中,你都会看到低活动期,即使是在企业应用程序,然而,数据中心与计算机工作站相比更是如此。
在随机读取中,SSD 710的性能与320类似,即使是在较高队列深度。
不过,随机写入又是另一回事了。当我们移动到队列深度4时,SSD 710开始领先于320,不过充其量也只是20%到30%的领先。很显然,这无法与SATA 6Gb/s的固态硬盘相匹配,毕竟英特尔的专有控制器是3Gb/s设备。
为什么在随机写入SSD 710会超越SSD 320呢?在企业级应用程序中,系统总是写入随机数据到整个LBA空间,而SSD总是空的(考虑驱动器用作缓存)。随着LBA空间增大,由于控制器需要执 行更多磁盘操作(例如垃圾清理)来保持性能,导致随机写入性能下降。相反,消费级驱动器总是充满持久性数据(至少在部分空间),所以只有固定的LBA空间 来测试性能。然而我们测试的是相对性能,LBA测试空间固定为16GB。
对于数据库工作负载,SSD 710比消费级320提供更好的性能,但是与SATA 6Gb/s固态硬盘相比,速度仍然相对较低,这也使可以理解的。当我们加入两个710时,性能提高了,但并没有出现线性增长。基于SLC的固态硬盘,如 P300,在RAID 0的性能仍然是软肋。
文件服务器处理着更多的读取工作量,所以710在RAID中表现不错,然而,这也是大多数SATA 6Gb/s固态硬盘大放异彩的领域。
在最末端结果尤为明显,Vertex 3达到33000 IOPS,这比RAID中的两个710还要高出5000IOPS。Vertex在这里并没有直接可比性,不过与其类似的Vertex 3 Pro完全具有可比性,尽管这个驱动器还需要在企业环境中不断证明自己。我们在调查数据中心时发现,所有受访者都是运行英特尔驱动器。英特尔无疑是有力的市场竞争者,毕竟他们更侧重与可靠性,而不是速度。
web服务器的测试结果与前面的文件服务器工作负载类似,它由100%的读取组成,并更侧重于较小的传输大小。因此,我们终于看到RAID 0下的两个710超越了SLC P300和Vertex。不过,这只发生在高于16的队列深度。在单驱动器配置中,SSD 710只是稍微领先于320.
连续性能VS传输大小
一些企业级工作负载“催生了”了大量的随机数据,例如Exchange信息存储和在线交易处理。连续任务可能包括写出日志文件或者备份数据到磁盘。 不过,无论哪种方式,你都会看到使用这些应用程序要比在桌面环境产生更多的I/O操作,这也是为什么我们配置ATTO来利用其最大队列深度10的原因。
在高队列深度,RAID在较小传输时提供了更好的性能。每个页面请求(8KB)都会消耗性能,所以使用条带化(条带化Striping是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中不同磁盘上的方法)是提高测试结果的唯一方法。
虽然在读取操作中,RAID阵列脱颖而出,但在我们写入测试中710的领先优势并不是特别明显,只是40%更高的性能。在单驱动器配置测试中,710的测试结果仍与320类似。
SandForce的压缩技术让人刮目相看,Vertex 3传输大小大于32KB,让其他固态硬盘望尘莫及,它也是唯一轻松突破500MB/s障碍的固态硬盘,虽然它是依赖于ATTO使用可压缩数据(例如日志文件)才实现这个成绩,如果换为不可压缩数据,其他条件不变,吞吐量下降到240MB/s。
性能表现
上图来源于今年的闪存峰会,这次峰会对企业环境与消费者环境的相关性有很多假设。企业驱动器需要提供全天候服务,在达到稳态性能后需要进行评估,不能接受停机时间,故障的后果是灾难性的。
当驱动器一整天都在运行,并且以其稳定状态运行时,性能必须是可接受和可预见的。如果服务器的工作负载长时间运行,它就没有时间进行后台垃圾清理以将散页移动到单块、恢复性能和减少写入放大。如果驱动器无法应付的话,事情会变得很糟糕。
清理性能
检查驱动器随着时间推移的运行情况并不难。首先,我们只要使用连续写入填满所有用户可访问的空间,让驱动器变得“很脏”。然后,我们将其调为4KB 随机写入,队列深度为32。由于驱动器装满了数据,垃圾清理无法将散页合并成自由块。当我们再次开始写入连续数据时,内部垃圾清理的影响就显现出来。
随机写入,20分钟
如果驱动器恢复很快,你就可以肯定有很多内部垃圾清理在进行。
在我们将SSD 710处理20分钟的随机写入后,我们开始看到一些差异。320对于较长时间采用了前台垃圾清理,而710则是执行一次性处理大量垃圾清理。因此,我们看到性能恢复相对较快。
这不是唯一的差异。当你看320图表时会发现,很明显在读取操作期间都会进行垃圾清理。让我们再次进行测试时,我们对此进行了确认。在六小时运行数据库配置文件后,我们看到了更高的写入放大值。
SSD 710并没有对读取进行任何垃圾清理,但是由于40%的超量供应,写入放大有所下降,从而降低了数据重排(以优化性能)的数量。
供应商声称性能可高达100MB/s左右似乎对性能过于乐观。SSD 320在处理20分钟的4KB 写入后,仍然保持相当不错的桌面型工作负载,但如果我们保持几个小时这样的工作负载,你可能会看到,随机写入下降到20MB/s。当我们将SSD 710处理一个小时的随机写入时,它在桌面型硬件的优势变得更加明显。
随机写入,60分钟
根据Iometer(Iometer是测试I/O的传输率和平均的I/O响应时间的开源磁盘性能测试工具)测试显示,连续读取/写入性能应该在175到200MB/s范围内,虽然性能急剧下降,因为很少的垃圾清理发生在实时。
当我们将这些结果与耐用性测试结合来看时,我们发现710处理前台垃圾清理更加娴熟,部分原因在于大量的超量供给。从整体来看,这使连续读取速度最小值达到60MB/s。相比之下,320更加依赖于后台垃圾清理(特别是在读取期间)以恢复性能。
闲置30分钟后
在这两种情况下,如果你给驱动器一些限制时间,性能会恢复到clean state,即使没有TRIM。
英特尔710:让企业存储更便宜?
企业市场通常会将最高性能硬件在最短时间内投入使用,然而,对于未经证实的技术,企业也应该保持最谨慎的态度,虽然这似乎有点自相矛盾。固态硬盘花 了很长很长的时间才在数据中心占有一席之地,现在固态硬盘正在努力突破服务器领域的瓶颈问题,正如三年多以前攻破桌面领域的瓶颈问题一样,当时英特尔的 X25-M刚刚将固态硬盘主流市场。
那时候,企业级X25-E创造了令人印象深刻的成绩。然而,该产品相对较小,而且昂贵,这影响了它的普及度。现在,SSD 710为我们带来了更加成熟的产品,其HET MLC内存声称优于桌面驱动器中使用的NAND。与此同时,我们也不得不接受这样一个问题,为了拉低价格和推动高容量模型,通过3Gb/s控制器提供的性能并不理想。
企业是否愿意接受这样的产品?我们现在还难以定论。一方面,我们的研究表明,英特尔在固态硬盘可靠性方面做出了榜样。并且,那些受限于短击 (short-stroked)硬盘驱动器的企业可能会抓住这个机会,转向高容量且每GB价格比已停产X25-E要低得多的固态存储。另一方面,有很多应 用程序非常需要尽可能多的吞吐量,因而这将推动不受SATA限制的基于PCIe固态硬盘的日益普及。
英特尔准备在其即将推出的SSD 720中解决这个问题,新产品将采用SLC NAND和PCI Express接口。
Intel SSD 320 & SSD 710
关于SSD 720,我们想说的是,英特尔的HET MLC驱动器确实能够提供出色的写入次数,从具体数据来看,200GB SSD 710的写入值达到1818TB,这是消费者级SSD 320的17倍,虽然并不是英特尔在IDF上提出的33倍,但是我们看到了这个驱动器的闪光点。
最开始,英特尔公司对于SSD 710的保修政策着实让我们担心,因为它涵盖了一些不规范的空话。大多数的英特尔固态硬盘都有三年保修(SSD 320是五年),但是710的保修政策是:三年或者当磁盘磨损指数(E9)达到1时,“先到先得”。我们发现,假设100%的4KB随机写入工作负载,全天候24小时运行,队列深度为32,大约需要4.2年来消耗200GB SSD710的全部P/E周期,也就是每天880GB的数据。如果是300GB SSD 320,将在一年内磨损。
也就是说,如果考虑闲置时间和三分之二的访问读取,英特尔的SSD 710在磨损之前,似乎有六七年的使用时间。然而,令人惊讶的是,连续传输在这里变成了“敌人”。虽然写入放大很低,数据移动速度达到约200MB/s,一天移动量达到15.5TB,让驱动器磨损的速度明显加快。
由于市面上没有与英特尔新驱动器类似的产品,我们只好将售价1200美元的 200GB SSD 710和售价2100美元的200GB P300做比较。我们很高兴英特尔为成本意识业务带来了价格相对合理的eMLC产品,如果你需要大量容量和企业级耐用性,这款SSD将满足你的需求。但是对于性能敏感型应用程序,仍然应选择基于SLC的驱动器,例如P300。英特尔计划通过下一代产品SSD 720来稳固其在这个特定市场的地位。