PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

寻找SSD的真实性能-PCEVA Storage Test系列测试开启

  [复制链接]
跳转到指定楼层
#
neeyuese 发表于 2016-8-15 19:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
点击数:49350|回复数:144
前言:

现在SSD对测试软件的优化越来越过分,使得测试结果距离真正的使用体验却越来越远。用什么方法能探究SSD产品的真实性能呢?

你所看到的,只是别人希望你看到的。

我意识到,测试SSD混合读写,才能真正了解到SSD产品的本质。本文我就介绍混合读写的意义,以及我编写的测试软件的情况,之后我们会对手上的盘陆续进行混合读写测试,形成一个排名,以便玩家们了解到SSD产品的真实性能。

1、现有测试软件不靠谱的原因

我们先来看下测试软件的种类,我喜欢把他们主要分成3类:

第一类,模拟压力类,如ASSSD,Crystal Disk Mark,Txbench,IOmeter,FIO。
第二类,应用测试类,如SYSMARK,PCMARK系列的主测试部分。
第三类,记录回放类,如Intel NASPT,PCMARK系列软件的存储测试部分。

模拟压力类的测试软件依靠主机的测试引擎程序给SSD发送高强度负载的测试请求(比如,短时间内写入纯4KB的数据),依靠压榨SSD性能和响应请求的速度得出成绩来进行比较。ASSSD,Crystal Disk Mark,Txbench均属于此类软件中的傻瓜版,点一下开始就完成测试了,易用但是不准确,由于这些软件误差较大,受系统影响,因此导致很多用户无谓的纠结,也被水军利用误导消费者。IOmeter和FIO则属于此类软件中的进阶版,区别在于可以自定义测试项目,不过前者图形界面的功能已经跟不上时代了,后者则主要在Linux下命令行使用,较难上手,如能精通已属高手。




上图中我们可以看到传统机械硬盘和SSD在操作上的明显不同。举个例子,传统机械硬盘的操作就像跨栏运动,冲刺,跳,冲刺,跳,流程相对单一,而SSD则更像篮球运动,冲刺,运球,传球,发球,篮板球,躲闪等各种无规律的招式。所以使用模拟压力类的测试,易用但不准确,为什么这么说呢?因为存储器操作不会同一时间就一种指令,都是多种指令混合一起,而模拟压力一般只是单纯测一类指令,考验下机械硬盘还成,但是这对SSD来说简直是太轻松了,适当加入混合读写等测试才更有意义。

应用测试类的测试软件依靠运行在测试机上安装的应用软件,进行实时性能比较,看上去更准确,但其实也有自身的局限。




如上图所示,在PCMARK Vantage的存储测试中,机械硬盘和SSD之间的差距显得很大,SSD之间的差距也不小。但是在应用测试类软件SYSMARK中,平台差距(处理器,内存和显卡)导致的影响则更大,那么我们到底测试的是存储性能还是不同电脑整机的差距呢?

记录回放类的测试软件依靠在母盘记录脚本、在测试SSD上进行回放并依靠延迟表现来进行比较,测试精度会依赖于记录脚本的数据量,数据量太小的话会被测试主机和SSD固件的缓存策略给优化掉,数据量太大又往往不贴合用户实际。




上图中是我自用的机器进行了8个小时的I/O操作记录,每个I/O操作都是实打实的(类似上面举例的篮球运动各种技术动作),因为I/O的服务时间也被同时记录了,所以不受到主机平台的影响(接近于PCMARK 8的存储测试),回放这个操作记录就能较真实反映出SSD在我这个应用环境下的性能,但这些操作记录又不能代表其他用户的。

总之,由于测试方式比较落后,以及整机系统与SSD自身优化的影响,玩家常用的测试软件经常无法体现SSD的真实性能。那么怎样才能找到一个更接近真实的方法呢?我认为,这得先搞清楚用户SSD日常使用是什么状况。

拿我我自用的主机来说,我的SSD是Intel 730 480GB,抽了一天空记录了8个小时的日常使用I/O,得到如下信息:



8小时的时间,一共读取了3.22GB,写入了7.07GB,总繁忙时间加起来也就46秒(可想而知SSD压力多小),然后进行下数据分析。



上图显示在这8小时的I/O记录中,大部分的QD都在1。



读取和写入是同时进行的,但是并没有固定比率的关系,完全取决于实际情况。



SSD性能比较好,所以处理完请求后有充足的时间进行休息(内部可以做垃圾回收恢复性能)



大部分的数据块大小请求是4KB,还混入不少8KB至128KB的数据块。

以上数据说明了如下2点事实:

1、对于民用环境,SSD日常使用的压力很小,所以SSD的QD根本起不来,吞吐量足够满足单用户需求,每次需要读写的时候均能够发挥出SSD的各种优化特性,例如SLC Cache和即时压缩等。
2、虽然压力小,但日常操作均有混合读写的比例,不太有只读或者只写的情况发生,另外数据以随机访问和4-128KB数据块为主。


介绍到这里,使用经验比较丰富的玩家就能发现问题了——现有的测试软件无法区分轻载或重载、民用或企业级应用的前提条件,而是混一起跑分。这就像测试汽车,无论什么车型、什么价位,上来就一脚油门到底,这能测试出啥有用的信息?也就是看下热闹罢了。但对于实际要买来用的人,这种简单粗暴的测试方法无法帮助自己了解产品的特性,更无从得知所测试的产品适用哪种应用。

玩了这么多的SSD,也逐渐接触了业内很多专家,为了找寻SSD真实性能,我自己写了一个SSD测试软件,命名为PCEVA Storage Test,缩写PST。

2、PCEVA Storage Test测试软件介绍

说了这么多,我并不是要黑上文介绍的三类测试软件,实际上这三类软件有不同的测试重点:

第一类模拟压力类测试其实最适合测试SSD的垃圾回收效率。第二类应用测试与第三类记录回放测试,则应该是针对不用的应用方向制定不同的测试方案。我认为将这三种测试方法合理的结合起来,才能更全面和准确的掌握SSD产品特性。

这也是我制作PST的最基本的思路。在编写算法的同时,我也进行了大量的实际测试来验证算法是不是合理。这中间有很多尝试、失败,当然最后还是得到了比较满意的结果。以下我就从已经验证过的测试数据来介绍测试原理与测试效果。




2.1、SSD在民用条件下的轻载工作情况

本文上面我自己的8小时I/O记录就属于民用轻载工况了。

基于提到的那2点事实,所以这个测试我设计的脚本压力不大,包括
1、QD1的测试,因为民用轻载SSD的QD上不去。
2、加入混合读写的测试,这个就能体现SSD的真实水平了。

总的来说,PST轻载测试目的是能够得出SSD在日常使用中的模拟压力性能表现,相比ASSSD和Crystal Disk Mark来说准确度更高,也比大部分都虚高的消费级SSD官标值更具有说服力。

这套测试下来,耗时大概要24小时左右,每个盘会写入与读取大量数据,从而也能检验整个SSD的稳定性。每一个测试子项中间也会停顿5分钟以上,以便让trim生效。就以下面这几个产品为例,咱们来看看测试情况以及体现的意义。

包括浦科特M6Pro,M6S+和M7VC 256GB SSD上浦科特之前送测的产品,顺便加入建兴T9 256GB的数据。从这几个盘的测试数据与对比情况,就能发现很多问题,下面一一来看。



我们先来看单纯的读/写测试。在随机读取方面,由于测试基于QD1,所以无法靠缓存优化,比较的其实是单纯的颗粒延迟和固件算法,请重点看表格里的数据。测试数据中发现,M7V 256GB虽然是TLC颗粒,但随机写入的性能竟然在大多数情况下都领先建兴T9 256GB;直到数据块达到128KB(这个大小已经不能算随机了,完全可以合并优化)后M7V因为TLC颗粒写入瓶颈败下阵来。 持续读取小文件的测试,表现最差的是M6Pro 256GB,数据块达到128KB后开始扳回局面,M7V 256GB由于SLC Cache模式的存在占了便宜。持续写入方面和之前的随机写入表现差不多,直到浦科特M7V 256GB出现TLC颗粒速度瓶颈前,建兴T9 256GB垫底。

本着科学证伪的态度,我必须要给自己挑挑错,所以咱们再来看其他角度的验证:
既然建兴T9 256GB表现的那么不正常,接下来我们拿某站建兴T9 256GB的数据来说。





原帖作者用ASSSD连续不停的测了4次得出了4个不同的持续写入成绩,



原帖作者用ASSSD测试空盘和满盘区别,得出性能会下降10%的结论





原帖作者接下来用Fastcopy复制文件来证明这10%的性能衰减并不会影响用户体验。

其实看他这么多图,不如直接看我的表中数据,他的各种测试结果证明了我这个测试方法能更快得知产品的真实情况。我的测试表明,1MB块的建兴T9 256GB持续写入速度369.21MB/s,和他填盘98%图里的Fastcopy图中的速度接近。另外,大家平日复制文件真的用Fastcopy?除了特殊情况外,我反正是用windows自带的资源管理器(鼠标右键的复制/粘贴)。



我们再来看下不同数据块的持续混合读/写性能。之前的事实已经说明平日我们的操作不可能只有纯读和写,那么这张表里的数据则相对更有意义。在纯读/写模式下勉强还行的建兴T9 256GB在这里基本全部垫底,只有当浦科特M7V 256GB的TLC写入速度瓶颈出现后才勉强超过,eMLC速度干不过TLC? 所以说,迷信虚假宣传emlc性能的人,可以洗洗睡了,山寨建兴也不必成天在论坛上用马甲编故事,非要说写入需求多大,耐久度多高,混合读写测试就暴露了这个产品的本质。另外提醒某些人,开着OP与不断电跑耐久,纯属欺骗。



随机混合读/写部分在小数据块方面输的还不多,数据块大了后建兴T9 256GB又惨不忍睹了,难怪只配卖这个价了。到底哪里出了问题?为何ASSSD或者Crystal Disk Mark跑不出这种情况?答案是:固件参数乱改造成负优化的结果,OP不足导致主控内部数据传输出了问题(拥堵)。简单的纯读/写请求并不能检验出埋得比较深的坑,但是混合读/写测试就不同了,能充分暴露一个SSD的真实水平。这就是我做这个测试的根本原因,避免被简单浮夸的评测误导自己。


2.2、SSD民用条件下的重载工作状况

虽然轻载就需要测试24小时左右,但重载的测试,比轻载要还要复杂。因为SSD内部现有数据的排放位置会牵涉到新写入数据存放到哪里的问题,会对性能测试产生干扰,所以每款SSD其实只有2个状态下的性能表现是固定不变的。一个是新盘表现(Secure Erase后至全盘空间没有填满数据之前),另一个是稳定态表现(各种数据请求压力下的最差值),严格上说,把不同的SSD产品在这两个状态之间的性能表现拿来直接对比有失公平。所以,测试的目标就是一个:把SSD跑到稳定态比较性能。

这里所说的重载工作依然是单机情况,非服务器应用,但会确保每项测试结果都为当前SSD的民用条件下的稳定态。等测试的SSD产品数据多了之后,就可以拿这个稳定态性能在不同产品之间进行对比和打分,预期效果如下:



目前,我们准备对曾经测试过的SSD都再重新跑一遍轻载与重载,然后出一个汇总的排比表格,类似下图。以后每测一个SSD,也都会加进去,这样方便用户很直观的知道SSD的真实水平,快速找到自己心仪的产品。




2.3、服务器压力环境下的使用状况



我会使用SNIA设计的固态硬盘性能测试标准规范(PTS)中的企业级部分做测试,具体的测试会在Linux下用FIO程序进行。SNIA测试标准要做的就是得出这个SSD在最恶情况下的性能表现,也就是告诉你这块SSD不会有比这更烂的性能表现了。虽然我认为这个标准有点为测试而测试的商业目的,脱离了实际情况,因为产品使用中不太可能达到这个最恶值,但依然具有参考意义,例如可以把某些问题看的更明显,这里拿上面发现问题的建兴T9 256GB举例:



上面是SNIA测试中的延迟测试部分(QD1)下的4块测试盘平均延迟,可以看到建兴T9 256GB在纯读取或者纯写入表现上并不差,但是一旦混合读/写后,延迟相比另外3块盘高了20多倍,这是什么概念?这相当于,大家玩网络游戏的时候别人都是ping 10,但有一个人ping 250……怪不得上面的民用轻载混合测试里表现那么难看。其余的数据目前还在更新中。

当然,可能山寨建兴的人又要召集几个小白学生到处说:我为了黑他们特意写个测试软件。但其实我是要感谢这个山寨建兴团队的,正是他们出了这种奇葩产品,促使这个测试软件可以在研发阶段就能接触到各种情况,加速了研发进度,以后再遇到各种作弊的产品也可以游刃有余的面对,这里只是当做一个案例来分析,我相信以后还会遇到更多这样的产品。

2.4、应用测试和记录回放类的结合使用
PCEVA Storage Test系列的Trace Benchmark测试的设计(目前这部分测试还在进行阶段,我正在收集典型应用环境样本中):
最终目的是通过收集特定用户群体的应用(例如高端游戏,设计软件,科学计算软件等)I/O记录定义一个标准,然后进行回放,相比PCMARK 8较单一的固定回放测试(即使是扩展测试也只是在循环回放相同的数据记录),自由度和合理性相信会大大增强。

3、总结
综上所述,只有测试SSD的混合读写性能,才能检验产品的真正水平。但遗憾的是,平常我们所用的测试软件,都没有这方面的考虑。所以说,不管用多少已有的软件进行快餐测试,就算再搞加权评分,但其实都没搞明白SSD的原理与特性,最后不过是被已对测试软件优化的产品欺骗罢了。实际上,混合读写测试在很多大企业内部有做,比如微软、百度、阿里这样的公司,他们在采购前都要用自己编写的测试方案亲自测试。我在了解到这个情况后,也决心写出来这样的软件,让PCEVA上的玩家都能玩个明白。基本思路再总结如下:

1、轻载测试部分,加入混合读写,这是目前其他已有测试软件都没有功能。目的是检验真实的民用性能水准和官标性能水分。
2、重载测试部分,直接写到稳定态,可以测试SSD垃圾回收效率。目的是反映民用最恶性能指标和做横评。
3、企业级测试部分,可以测试SSD的耐压程度。目的是得出企业级最恶性能指标和分析固件算法上的缺陷。
4、回放类测试,针对具体应用来检验产品的在此类应用上的适用度。

测试方案已完成的部分,会用到我们已有的SSD,都进行一番测试,大概2-3天测完一个盘,每测完一个就公布数据,并加入整体排名里。这个测试软件后续还要继续不停的升级更新,请大家保持关注。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 3绝对值 +3 收起 理由
banny + 1 我很赞同
Metasploit + 1 很给力!
batzxcboy + 1 很给力!

查看全部评分

144#
无为有道 发表于 2017-6-17 11:47 | 只看该作者
浴室大佬能分享下PCEVA Storage Test软件吗  我有个傲腾 想按照大佬您流程做个测试看看  
143#
mengld 发表于 2016-10-9 20:29 | 只看该作者
Cubelia 发表于 2016-8-18 02:11
刚刚看了一下Lite-On的网站
确实是如同LZ说的那样,光宝系是一堆企业的结合体

浦科特目前归属于PLDS,看样子是光宝的子公司
142#
adsl4096 发表于 2016-10-7 17:33 | 只看该作者
石头 发表于 2016-10-6 15:50
总比啥也玩不明白还瞎bb不懂装懂的强多了。。。

你一定要用这么多形容词还不断句才爽吗?
141#
石头 发表于 2016-10-6 15:50 | 只看该作者
adsl4096 发表于 2016-10-5 11:43
我只是说一个理想的测试是什么样子。不是说你测的是空白或是测的不够好。基于你本身就很专业,我选择性的 ...

总比啥也玩不明白还瞎bb不懂装懂的强多了。。。
140#
贱狗在飞啊 发表于 2016-10-6 09:48 | 只看该作者
浴室辛苦了。。。
139#
adsl4096 发表于 2016-10-5 11:43 | 只看该作者
neeyuese 发表于 2016-10-5 06:54
如果空盘颜色是白色的,脏盘颜色是灰色的(怎么灰你如何定义?),我测的是稳定态,颜色是乌漆墨黑的。

...

我只是说一个理想的测试是什么样子。不是说你测的是空白或是测的不够好。基于你本身就很专业,我选择性的回复一下,灰色的定义就是一个block里应该包含可读写部分、gc已标记未完成、完全未gc。假如全部的block都这样那就是理想的脏状态。我知道物理映射后边的部分你也完全触碰不到,但大概的弄脏一块盘你还是有办法的我认为。当然以上最好是在轻度老化状态下进行,因为规避物理坏点也是主控的压力之一。
然后我觉得你的测试太累了7-21天。。。最后就是你真的需要这样一个排名么?呵呵,你会发现对于大多数人而言也意义不大,该买什么的还是买什么。你自己本身又很清楚问题所在。。。所以。。。不过就像有的人玩游戏打发时间。你玩硬盘。。。

138#
neeyuese  楼主| 发表于 2016-10-5 06:54 | 只看该作者
adsl4096 发表于 2016-10-4 20:11
呵呵,空白盘的测试,我觉得根本没必要测试空白的盘,这就像测试电源的峰值功率。要想测试一个盘的“额定 ...

如果空盘颜色是白色的,脏盘颜色是灰色的(怎么灰你如何定义?),我测的是稳定态,颜色是乌漆墨黑的

你要先看清楚我没测空盘,我测的是稳定态,一轮测试需要消耗掉300-800个P/E,测一次要7-21天,取决于盘的速度,然后我们再来讨论下面的部分。

家用是不可能有稳定态的压力的,所以PST还加入了日常状态的测试,也就是上面的灰色范围,测试周期为24小时附近。

你提到的空盘测试(白色),外面评测网站测一轮估计最多1-2小时就搞定了,有的就测几分钟。

137#
石头 发表于 2016-10-4 20:47 | 只看该作者
adsl4096 发表于 2016-10-4 18:11
呵呵,空白盘的测试,我觉得根本没必要测试空白的盘,这就像测试电源的峰值功率。要想测试一个盘的“额定 ...

我可没说测空白盘啊。。。脏盘,要知道脏在哪里——这叫确定性——否则搞不清楚测试样品的固件算法的原理。。。。跑到稳定态难道还不够脏吗,稳定态其实就是因为之前的数据太散,没法变成持续缓存出来。浴室写的测试脚本,往里填充的数据都是可确定的。测试的想法是否有可操作性,也是一个很重要的前提。
136#
adsl4096 发表于 2016-10-4 18:11 | 只看该作者
本帖最后由 adsl4096 于 2016-10-4 19:42 编辑
石头 发表于 2016-10-4 18:06
各种测试条件的加入必须有确定性才有意义……很多人以为只要一股脑的增加负载测试出结果就能说明问题,这 ...

呵呵,空白盘的测试,我觉得根本没必要测试空白的盘,这就像测试电源的峰值功率。要想测试一个盘的“额定功率”,必须是测试脏盘,一个盘极限能操作多少block?然后因为是脏盘,每个block里的line操作完成后切换到下一block,这里的反复切换的性能极限是多少?这样子才能测试到本质性能。否则空盘测试,其实只测试了block和line的单边峰值而已。哪怕混合读写测试,可能对这部分的压力也是小的。因为盘本身较干净主控的程控压力其实不大。但我是支持测试混合读写的。
第二个你认为空白的比脏的稳定,其实不是的,理论上是一样的稳定的。只有测试软件脱靶,没能瞄准脏的block时,测试分数才有空盘增益。因为测试本身就是波动的,所以根据概率,只要测试软件命中率在一个范围内即可认为测试是有效的。

第三个,系统盘启动,可能不是必要的。但脏盘是必要的。
135#
石头 发表于 2016-10-4 18:06 | 只看该作者
adsl4096 发表于 2016-10-4 17:51
我提出的方法也不是瞎搞。只是你认为那些多余的附加条件影响了盘的本质而已。我却认为适应环境条件也是盘 ...

各种测试条件的加入必须有确定性才有意义……很多人以为只要一股脑的增加负载测试出结果就能说明问题,这是很典型的外行看热闹的思维方式。脏盘与稳定态哪个更有确定性?当系统盘谁知道会有什么后台应用占用了IO?都不确定。。。。导致最后的结论也会差之千里。
134#
adsl4096 发表于 2016-10-4 17:51 | 只看该作者
石头 发表于 2016-10-4 17:48
学院派才能搞明白事情啊。。。。稀里糊涂那不是搞测试,是瞎搞当然,喜欢瞎搞也不是问题,每个 ...

我提出的方法也不是瞎搞。只是你认为那些多余的附加条件影响了盘的本质而已。我却认为适应环境条件也是盘的本质之一。
133#
adsl4096 发表于 2016-10-4 17:48 | 只看该作者
nighttob 发表于 2016-10-4 17:42
那么问题来了,怎么算“脏盘”?
如何把这个“脏”做到一个可控的水平,毕竟这是要做批量测试的

是啊,这是关键,作为量化标准,测试软件最好能使这个脏的程度一样或几乎一样。
132#
石头 发表于 2016-10-4 17:48 | 只看该作者
adsl4096 发表于 2016-10-4 17:46
呵呵,你太学院派了,原理分析只做研究用。我认为作为实际使用的测试,应该用最接近实际使用的方式方法。 ...

学院派才能搞明白事情啊。。。。稀里糊涂那不是搞测试,是瞎搞{:1_474:}当然,喜欢瞎搞也不是问题,每个人有自己的自由,但只是我们不会那样做罢了。
131#
adsl4096 发表于 2016-10-4 17:46 | 只看该作者
石头 发表于 2016-10-4 17:39
这个方式不会更准,只会得到错误的结论,因为不知道这些状态下到底哪些影响了测试对象的输出数据。做测试 ...

呵呵,你太学院派了,原理分析只做研究用。我认为作为实际使用的测试,应该用最接近实际使用的方式方法。否则测出来还是跟实际使用不一致。   
130#
nighttob 发表于 2016-10-4 17:42 | 只看该作者
adsl4096 发表于 2016-10-4 17:18
我认为测试一个盘的真实性能必须做到以下几点,首先需要本身是系统盘或带有系统分区,并且脏盘测试,第二脏 ...

那么问题来了,怎么算“脏盘”?
如何把这个“脏”做到一个可控的水平,毕竟这是要做批量测试的

129#
石头 发表于 2016-10-4 17:39 | 只看该作者
adsl4096 发表于 2016-10-4 17:18
我认为测试一个盘的真实性能必须做到以下几点,首先需要本身是系统盘或带有系统分区,并且脏盘测试,第二脏 ...

这个方式不会更准,只会得到错误的结论,因为不知道这些状态下到底哪些影响了测试对象的输出数据。做测试并不是为了把东西搞坏,而是要搞明白原理。
128#
adsl4096 发表于 2016-10-4 17:18 | 只看该作者
本帖最后由 adsl4096 于 2016-10-4 17:41 编辑

我认为测试一个盘的真实性能必须做到以下几点,首先需要本身是系统盘或带有系统分区,并且作为引导盘启动测试,第二脏盘正常断电测试,第三非正常断电后的测试。不主动trim,由系统控制。
127#
sertorius 发表于 2016-9-23 18:30 | 只看该作者
等三星各种神盘的表现
126#
huayangmeng 发表于 2016-9-15 12:59 | 只看该作者
浴室大神,闪迪X400 256G值的购买吗?我主要是用来装系统和软件以及VMware

125#
ngkiller 发表于 2016-9-14 12:09 | 只看该作者
这个测试软件确实是比较实在的。我也觉得厂家的宣传明显是不靠谱的。而目前消费者最简单粗暴的办法还是继续奉行:一分钱一分货的标准吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部