作者 石璟鑫
测试
注意事项:
首先,还是那个老生常谈的问题:什么是性能?
相当多的小白都是闭着眼跑分,懂的稍微多点的知道要看跑分里的”4K性能”。这是一个非常大众化的误区。问题何在?其实这种粗暴的方式问题相当多,我列举其中几个比较明显的:
1.一致性问题:一般跑分会给出红色框子里的峰值性能,而实际使用中你可能会经常体验到蓝色框子内的最低值。而由于应用程序本身和等待其他硬件的延迟使得平均值和最大值往往是过剩的,真正影响体验的往往是低性能的那段。对于桌面与工作站应用,”不慢不卡”比”最快能跑多快”更加重要。
2.延迟:ASSSD这种爆发跑分软件给出的延迟非常不准确,并且也没告诉你具体是什么情况下的延迟。实际上很多比较差的SSD在复杂情况下延迟可以达到数秒钟,影响体验不说,这又可能使软件内部timeout,像滚雪球一般造成更大的问题。显然在桌面或工作站应用中,我们关注的是操作以后多长时间能处理完毕,而不是单纯的一次能处理几十万条指令这个数字吧。
3.队列深度(QD, QueueDepth):桌面及工作站应用虽然很少有数据服务器那样持续的高QD操作,但是负载往往是集中在短时间内发生。在程序加载数据过程中队列深度绝不可以简单粗暴地用QD1(ASSSD中4K那一栏就是4KQD1性能)来描述。实际上在Raid0等情形中,虽然随机QD=1性能基本不变,但是QD≥2的情况就有一定提升了。
4.稳定态:SSD会在其应用环境下达到一种叫”稳定态”的状态。在一个应用环境下SSD的性能随着时间会逐渐变化到一个极限状态,这个极限就是稳定态(由于离散误差的存在,这个极限是可以达到的)。这才是SSD真正使用中的状态。虽然桌面情况下这个问题没有服务器中那么明显,但是这也是一个不能忽视的因素。显然这个因素在爆发跑分里完全涉及不到,就算之后人为测量也很难正确评估,因为它根本不会给你速度曲线。
这是Tom’s hardware给出的一段说明:
总之,我们要测试的是”性能”,而不是”跑分”。要的是衡量硬盘的真实性能,而不是娱乐。
另一个问题就是,可能会有人反映,某SSD别人测出来IOPS为什么比你高几倍?这并不是测试方法出了差错,而是故意为之。国外很多评测站都只去测RAW性能,也就是没有文件系统的时候跑出来的成绩。从某种程度上而言这种方法显然忽视了实际使用中必然会接触的一个因素。曾经看过一些SSD,在RAW下跑的曲线很漂亮,分区格式化后基本就是废物了。。。测试为的是为评价实际使用性能而做,并不只是为了跑出来好看;我们要看硬盘在实际环境中能表现出多少性能,而不是它们能跑出多高的成绩。所以本次测试由于面向桌面与工作站应用,会在测试时将磁盘格式化为NTFS,并且按照美光给出的SSD测试规范进行”Precondition”处理。这些均在IOmeter中进行。
参测产品:
Sandisk Lightning LP406M 400GB (SAS to PCI-e)
Sandisk A110 256GB (Native PCI-e AHCI)
LSI Warpdrive NWD-RLP-1860 1.86TB (SAS to PCI-e 4xSF2582 R0)
Micron P420m 700GB/1.4TB (Native PCI-e AHCI)
Samsung SM951 256GB(包括Raid0)(Native PCI-e NVMe)
Intel 750 1.2TB (Native PCI-e NVMe)
Intel DC P3605 1.6TB(Native PCI-e NVMe)
HGST He6 6TB 充氦机械硬盘
各种以往的SATA SSD
测试环境:
CPU:Intel E5-2698B v3 @2.0GHz Turbo 2.4-3.4GHz
主板:华硕 X99-M WS
内存:海盗船 Dominator Platinum 2666C16 8GBx4 @2133 15-15-15-362T
显卡:AMD Firepro W7100 8GB
操作系统:Windows7 64bit
文件系统:NTFS
驱动程序:(厂商提供)
测试软件:IOMeter 1.1
数据类型:Pseudo Random
测试方法:
1.使用IOMeter测试各项峰值与稳定态性能;
2.记录并分析延迟特征;
3.实景测试,进行实际操作环境中的测试并记录等待时间。
测试中的名词解释:
IOPS:每秒处理的I/O指令数量,也就是吞吐量。它可以和带宽(MB/s)进行简单的换算,比如随机读取,IOPS为10240,每一个请求的大小是4KB,那么其带宽就是4KB×10240=40MB/s,也就是常说的asssd中的”4k”性能,又如连续读取2IOPS,每个请求大小为1GB,那么其连续读取带宽为2GB/s。
队列深度(QD,QueueDepth):所有读、写指令都会被放在一个队列里,由SSD从队列里提取出来完成。如QD256代表每个时间点同时有256个指令在队列中。
稳定态:SSD在一个环境中长时间工作后达到稳定状态。对于写入,SSD往往会在写一段时间后性能突然下降后趋于稳定,而对于读取,SSD性能往往一直保持在一个水平上下浮动。
OP(Over Provisioning):即将SSD留出一部分空间用以优化性能、提供数据保护等。空间的大小设有出厂值,也可以手动给出。
峰值性能测试:
连续读写性能趋势:
读取性能方面,最抢眼的是美光P420m,毕竟标称3300MB/s也是最高的。请求大小2MB时三星SM951 Raid0有个突然的提升,达到了类似intel方案的带宽。LSI warpdrive中规中矩,很符合4块sata盘加起来的带宽,闪迪Lightning由于只有一个子盘,性能也和之前的sata硬盘差不多。这里也能看出,具有XOR、RAIN、RAISE等技术的盘在请求较小的时候性能没有不带这种校验功能的盘带宽大,因为具有这种设计的盘再小的请求都需要同时读取一个固定大小校验信息。
写入性能方面类似,不过intel P3605现在成了写入带宽最高的。这时三星SM951及其Raid0方案性能出现了一些不稳定状况。P420m则下降到较低的水平。
不过不论是读取还是写入,由于PCI-e带宽优势,原先的sata硬盘都是无法一战的,机械硬盘也一直是垫底。另外注意,“4K性能”是一种非常不严谨的说法,其不一定代表随机性能,处理连续的4KB大小的读写请求的性能也可以称之为4K性能。
随机读写性能趋势:
读取测试中仍然是P420m最优,得益于其霸气的32通道主控。Intel和三星紧随其后。
写入测试,三星SM951 Raid0取得最高分。Intel方案只能屈居第二,毕竟其各种数据校验步骤需要付出一定的性能代价。然而三星在此测试中出现了不稳定的状况,测试多次才找到一次曲线比较正常的,不论在转接卡、华硕主板还是华擎ultra M2上。
可以说在峰值随机性能方面,家用级并不差,sata SSD也不是像想象中那么不堪一击。另外在队列深度稍高的时候,Raid也是可以增加其随机性能的。
混合读写测试IOPS及延迟(80:20读:写):
在这种稍微复杂一点的情况下,固件编写的水平差距出来了。Intel方案一骑绝尘,不管是IOPS还是延迟都远远领先其他产品。这里也可以发现一个问题:不是使用PCI-e、NVMe的SSD延迟就一定低。使用sata通道AHCI协议的DCS3700延迟性能仍然属于第一梯队中;而SM951单盘的情况下出现了更严重不稳定的状况。至于机械硬盘,当他死了就好。
这种状况已经很复杂了?不,我们还有更可怕的。
稳定态性能统计:
首先是队列深度为1的随机读取性能。我们记录下1000秒内速度的变化曲线。
美光P420m与P3605属于第一个层次,750紧随其后。它们的性能都非常稳定。三星SM951性能波动较大,但是仍然在一个比较高的层次。值得注意的是老将DC S3700(浅绿色线条),虽然是sata通道但是仍然性能不俗。
我们看看延迟变化趋势:
SSD的延迟大部分都在10ms以内,包括SATA通道的。机械硬盘其实也不算太差。但是在10ms以上仍然浮着一些较高延迟的点,其中大部分是SM951 Raid0的,也有少数Warpdrive的,甚至高过机械硬盘的平均延迟。毕竟Raid0会对延迟性能有一定影响,而SM951目前看本身性能就不是那么一致。
另外,这也说明了为什么一些人仍然认为机械和SSD用起来差不多。人对正常的高速的状态不那么敏感,但是系统一旦出现卡顿则很容易被发现。SSD性能一致性问题产生的高延迟恰巧容易被发现。
队列深度为1的随机写入性能:
进入写入稳定态以后,差别就出来了。很多优秀的SATA硬盘甚至处于领先状态,而PCI-e接口并不能让SSD在这上面获取优势。在这种状态下,SSD必须在写入的同时进行垃圾回收,同时保证每一个指令完成的时间可控。这就纯考验SSD自己的素质了。三星SM951性能波动还是很大的,但是Raid0之后稳定了下来。
另外,P3605甚至没法进入稳定态,由于其巨大的OP容量造成的性能优势,将写入时间增加到5000秒仍然没有性能下滑。其队列深度1就是菜13,我要打10个。
延迟趋势:
分化很明显,在刻度50ms的坐标系下,好的硬盘延迟非常贴近0,素质一般的甚至没有到稳定态延迟都可以超过100ms达到人可以轻松感知的范围,甚至超过机械硬盘的延迟,包括闪迪A110简直是PCIe界的耻辱。。。SATA SSD表现仍然不差,但是最值得称赞的是三星SM951,虽然仍然不是很理想,但是终于消除了840pro时代漫天飞舞的高延迟。
队列深度32的随机读取性能:
没太多可说的,和QD1的情况差不多。我们看看延迟变化趋势:
在如此多的并发指令下,机械硬盘已经飘走了。。。
SM951单盘变得惨不忍睹,仍然是Raid0拯救了它,让延迟稳下来。Warpdrive也有一些个别的高延迟,不过都在30ms以内,对人来说很难感受到。
接下来是SSD的噩梦:队列深度32的随机写入测试。测试进行5000秒,以极大的压力压榨SSD的性能。
差距被拉大。Intel DC P3605仍然是一个神一般的存在,高出第二名接近一倍,而且还在测试过程中不断优化自己的性能。LSI Warpdrive也展示出SF主控4盘阵列应有的性能。而三星仍然是相当熟悉的性能下降,不过至少IOPS稳定住了,比上一代具有很大的进步。三星终于开始不再专业进行爆发跑分,肯在一致性上下功夫了。(此处图请脑补)
美光P420m则出现了很奇特的性能变化表现。其没有峰值状态,在初始化的低速后一直稳定,之后进入限速状态。对比RAW下的测试,美光出现这种状况的原因可能是其对NTFS系统的支持并不是那么友好。
另外,其实sata组的性能也还算不错,同样的规模上不输于PCI-e。
延迟趋势:
当任务的复杂度上去以后,100ms附近的延迟也就司空见惯了。当然,也有应付的柔韧有余的P420m P3605和750,Warpdrive的表现也不差,保持在50ms以内。但是SM951的延迟明显出现了分层,大概分出来7层外加一些散点,这与主控8个通道不谋而和,表现出了SSD不同时间的不同占用状态。
当然,这里有一个关键因素:OP容量。这就是OP容量的第二个重要作用:增加稳定态写入性能。之前说过,SSD在稳定态中必须在处理指令的同时进行垃圾回收。SSD主控是很苦的,不仅要考虑什么地方可以删什么地方不能删,而且要把不能删的东西挪动位置才能进行擦除操作(写入的单位page比擦除的单位block细得多),还要考虑怎么排列这些数据增加耐久,更要考虑每一笔任务的交期不能长。。。更多的可用空间会让可整理的余地更大。稳定态写入性能与OP容量直接相关。
我们把所有盘的OP容量都放到一个水平,然后再进行这个测试:
现在,SM951的性能分裂成2个状态,高性能状态和intel DC P系列性能差不多,低性能状态则相当低。这种特点在家用级SSD中非常常见,反映了SSD是否在占用通道进行GC,但是在要求比较高的环境中性能的大幅波动是致命的。三星在一致性/QoS上还有很长的路要走。
你以为队列深度32(QD32)就结束了?不,因为NVMe协议在队列上的改良,我们将队列深度设置到256测试其读写性能。
首先是QD256读取。
提升最明显的就是SM951,由于采用了NVMe协议,性能甚至赶上了P420m。紧随其后的P3605则是有一个初始化性能提升过程。而对于通道数又少又没有NVMe的闪迪Lightning来说,QD256和QD32在吞吐量上并没有多少区别。
延迟趋势:
对于闪迪Lightning来说,更多的并发指令只能变成累赘。其延迟相对QD32时有所增加。忍受不住压力的Warpdrive也更加频繁地出现高延迟点。规格强悍的P420m以及采用NVMe的P3605、SM951则仍然具有优秀的读取延迟表现。
QD256随机写入性能:
相对于QD32的情况,由于更多的指令使得强大的规格得以发挥,Warpdrive、P420m、DC P3605和750系列都有一定的提升。其他的则老老实实地待在低性能的范围内。毕竟,只有8个通道的情况下,不管有没有NVMe,吞吐量也就那样了。
延迟趋势:
指令数量更多对吞吐量是好事,但是对于延迟来说,它可能会造成灾难性的后果。在队列深度达到256时,每一颗硬盘的延迟都有不同程度的增加。然而优秀的SSD毕竟优秀,美光P420m和Intel DC P3605在初始化以后仍然将延迟限制在50ms以内,LSI Warpdrive也不差。闪迪Lightning则轻松上百。更要命的是三星SM951,画面太美不敢看。。。
同样的,我们将OP容量放到同一个水平,再次进行测试。
将SM951的OP放大以后,和QD32的情况类似,IOPS出现了分层。我们看看延迟:
SM951及其Raid0的延迟得到了很大程度的改善。虽然经常达到100-150ms以上这个人容易感知到的区间,但是至少不是200保底,虽然能感觉到,但是并不会造成严重的卡顿。
如果散点图看不清,请下载原测试统计excel文档:
链接:http://pan.baidu.com/s/1kVKyYjl 密码:ji7s
延迟统计:
我们不妨换一个角度,看看这些测试中都出现了多少次不同长度的延迟?
测试中将较高的延迟分为多个区段,看落在每一个区段内的数量。当然,越高的延迟数量越少越好。
QD1随机读取延迟分布:
只有QD1的话,大家的延迟都还可以,没有超过50ms的。
QD1随机写入延迟分布:
这时,大家就有点”擦边”了。有一些硬盘出现了大于100ms的延迟。不要谈840pro的4.7秒延迟,那是黑历史。。。
QD32随机读取延迟分布:
SM951单盘的延迟开始变坏,但是Raid0仍然能hold住它。
QD32随机写入延迟分布:
有4块盘开始出现200ms以上的延迟。SM951比840pro的情况好得多。然而intel的表现令人咋舌,在别的盘出现”危机”的时候,intel全家,不管是sata还是PCI-e接口,都具有相当低的延迟,30ms以上的延迟仅有S3700出现过24次。要知道总体样本容量有几百万。。。
QD256随机读取延迟分布:
Warpdrive开始出现较高的延迟,intel和三星方案表现良好。比较特殊的是美光P420m。之前在曲线图上有些朋友会注意到,P420m在安全擦除后达到稳定性能之前会有一个”预热”阶段,这个阶段中IOPS较低、延迟较高。不过就算是”较高”的延迟,也都在100ms以内的安全范围内。
QD256随机写入延迟分布:
很多盘开始出现100ms以上的延迟。但是如果不算美光的预热时间,美光P420m和Intel DC P3605延迟性能仍然坚挺。750则处于”卡线”状态,虽然没有太高的延迟但是30ms以上延迟还是不少的。具有成为强者的实力的才能被称为强者,驽马再怎么标榜也不会被伯乐看上,这就是目前企业级市场的现状。
实景测试:
对于桌面应用的实际应用情景,我们选几种进行实际测试。注意,这些测试都是峰值性能测试,并没有考虑到SSD的性能衰减。
Windows启动时间(不包括自检):
由于win7目前的NVMe驱动问题,采用NVMe协议的硬盘目前没有什么优势。桥接的盘更慢。不过最快和最慢相差仅在一秒左右。
虽然测试中成绩最好的是S3500,但是在较复杂的或者有一定使用时间的系统中,如tom’s hardware的服务器启动测试中,DC P系列可以比DC S系列快上20秒(44.5s与64.8s)。
3dsmax 2015启动时间:
其实3dsmax加载过程中硬盘读取的内容并不算多,更多的时间用于初始化各种插件与显卡等硬件。随着SSD性能的增加我们看到性能只有百分之十几的提升。
Photoshop CS5启动时间:
这里我们就能看到一些提升了。不过PS的软件执行效率也并不高,更多的时候只是等待。
星球大战:前线”恩多生存”地图读取时间:
目前画质最好的游戏之一。虽然说这种大型游戏在加载的时候更多是显卡的工作,但是SSD之间的差距也被拉开了。第一队包括P420m、P3605与Warpdrive这三个连续读取性能较高的硬盘,但是SM951 Raid0却相对弱一些。这点之后会分析。
好SSD对优化得当的应用和硬盘性能占比较多的应用是有很大提升的。它可以让人感受到与机硬盘械到SSD程度接近的提升,不过前提是,它真的是一块好SSD。
星球大战:帝国战争Mod”盟军v7.0B”读取时间:
这就是典型的老游戏,更是老引擎+一大堆mod/dlc的代表。由于软件执行效率实在太差,硬盘之间拉不开差距。
高速点击测试:
测试使用了一些常用的小软件,将其移动到各个硬盘上,使用樱桃DG4微动以最快的手速依此点击每一个程序并重复3次。使用按键记录软件记录操作,使用秒表测量所有程序都启动需要的时间,以测硬盘的响应速度。
可以说这里的SSD基本都一样。手速和系统延迟占主导地位。SSD造成的”系统响应速度”的差别是不存在的。然而在其他软件如浏览器中则是另一种情况。
掉电保护测试:
CPU-z保存认证文件后立即切断电源,看重启后这些文件能否仍然通过认证。结果也很明显,具有掉电保护的硬盘都能保住这最后一笔数据。这在极限超频中还是很重要的。个别朋友表示好不容易留下来的认证和截图重启以后就没有了,在系统不稳定的时候,SSD很可能来不及更新映射表或回写数据。
那我们究竟该如何评价一块SSD的性能呢?且听下回分解。