PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

读取掉速是SSD的宿命?正确测试方法是关键

[复制链接]
Essence 发表于 2020-12-29 14:55 | 显示全部楼层 |阅读模式
点击数:2602|回复数:12
近期网络上有一些有关西数SSD旧数据读取掉速的消息,并有人指出掉速与BiCS闪存(特别是BiCS3)有关。近期PCEVA测试的龟甲T3000固态硬盘样品恰好使用了BiCS3闪存,我们抽空对此进行了测试。

测试方法:高温烘烤
旧数据读取掉速在自然状态下通常需要很长时间才能表现的比较明显,我们需要依赖高温烘烤来加速模拟数据在长期存储后的状态。


本次测试针对龟甲T3000 512GB样品进行,仅代表当前样品在当前固件下的表现,烘烤测试前主机写入量14175GB,CrystalDiskInfo显示健康状态97%。烘烤测试设定为80度下维持22.5小时。


按照之前的换算表,80度下22.5小时相当于30度下连续断电存储1年,或25度下连续断电存储2年。这个烘烤测试的难度会高于正常使用2年或3年时间,因为正常开机和使用过程会有垃圾回收和磨损均衡算法影响,将部分旧数据重新写入到新的位置,从而产生重置的效果。



验证方式的选择:
根据我们的观察,很多玩家仍然在使用HDTune来检测固态硬盘上文件的读取速度,这其中很容易产生一些误解。比方说,速度曲线中的低落位置未必代表掉速、速度曲线中的较高部分比CrystalDiskMark/AS SSD Benchmark测得的顺序读取速度低也是正常现象。


先来解答第一个问题,上图中是我们向龟甲T3000 512GB中填充256GB数据后的HDTune读取基准,前半部分由于盘内有数据,SSD在读取时需要发生实际的闪存读取操作而有真实的延迟,后半部分由于主控通过FTL查表就能了解这些位置是空的,所以根本没有经过山区读取就直接返回了0,速度快且相对平直。

再来看上面提到的第二个问题,HDTune读取基准显示的速度偏低。这个问题其实也很简单,HDTune默认是采用64K块大小进行读取,而AS SSD Benchmark采用16MB块大小进行读取、CrystalDiskMark采用128KB QD32队列读取进行测试,如果在HDTune中将块大小改成8MB,则能测出相对更高的读取速度。


以上解释了HDTune读取基准测试成绩容易产生的误解。接下来我们还是用相对更可靠的File Bench工具进行测试。在烘烤之前我们向龟甲T3000 512GB中填入了238个1GB容量的随机数据测试文件,File Bench测得的平均读取速度为1647MB/s。



经80度、22.5小时高温烘烤之后,等待盘体自然冷却至室温,装机重新进行File Bench读取速度测试,测得的平均读取速度为1636MB/s。



间隔4分钟后再次测试,测得的平均读取速度为1647MB/s。可以认定没有发生掉速。



为何近几年掉速现象频发:
有玩家感叹近几年SSD掉速的消息比过去要多,是不是新SSD都变得不靠谱了。首先,当前3D TLC闪存的PE擦写循环次数其实已经追平2D MLC时代,甚至比某些晚期型号的2D MLC还要略高一些。不过同时我们也要认识到,闪存PE次数提升也跟纠错算法的进步有关。

早期SSD掉速是比较少见的,除了用户基数少、关注度低以外,当时SSD主控只有简单的BCH纠错,Read Retry都是后来才引入的,所以在耐久度测试中可能一直不会遇到掉速,而是突然在某一次烘烤后闪存错误率大大地超过了主控的纠错能力,发生大量重映射并直接锁盘或变砖。

而后来的发展过程大家就比较熟悉了,Read Retry并不是在纠错失败时简单的重新读一次试试,它还包含了读取参数的微调,目的是适应闪存磨损之后的阈值电压偏移。Read Retry是一种高级纠错方式,带来了纠错能力的提高,同时一旦用到它也会产生额外的延迟,表现为读取掉速甚至短时间内卡顿无响应。

在这之后,LDPC纠错伴随TLC纠错登上历史舞台。LDPC纠错包括硬解码和软解码两种,后者纠错能力更强,当然也需要反复多次读取来获取“软信息”,说白了还是一个后果:一旦用到它的时候,会带来更强纠错效果,也会带来更多延迟,表现出读取掉速或卡顿无响应。

以上这些问题在SATA接口的6Gbps接口限制下可能还不易被发觉,或许掉完之后还是比SATA接口速度更快,而NVMe固态硬盘就会把掉速直接地呈现出来。

SSD掉速是否全怪固件保守?
旧数据掉速很容易被归因为固件保守惜命,不主动搬移重写旧数据。实际上现在的主控固件都有检测闪存单元状态,并在必要时读取其中数据、写入新块、擦除旧块的功能逻辑。无论是出于控制写入放大率的考虑,还是不影响日常使用性能,主控都不可能经常做这种维护工作。

另外,如果超级积极地去搬移和刷新旧数据,是否一定能起到好效果呢?答案是未必。因为主控在它的位置上无法看到文件系统层面的文件和数据关联,刷新工作不是以文件为单位进行,有可能会把原本连续的数据拆成存放在不同闪存位置的大量片段(注意,这里产生的并不是文件碎片,文件碎片是文件系统层面上的位置不连贯),变顺序读取为随机读取,此举不但增加读取延迟,还让垃圾回收变得复杂化,会进一步提高写入放大率、增大闪存磨损,这是大家都不希望看到的。

作为用户我们看不透SSD主控和固件到底在做什么,而在另一头,SSD主控也不清楚我们想要做什么,哪些数据需要刷新,该什么时候刷新,主控的迷茫程度不亚于用户自己。所以,不要把应对旧数据掉速当成一个很简单、很容易做到、厂商故意偷懒做不到位的问题。在这方面,企业级固态硬盘有更多的探索和尝试,未来的成果有可能引入到消费级固态硬盘,当然这都是后话了。

旧数据掉速是否一定影响体验?
对于一个写入较早的“旧”文件来说,如果它的内容在日常使用中发生更改,由于闪存不能覆盖写的特性,新改写的数据一定会存储到新的位置,并让原有位置的Page页无效化,进而在后续的垃圾回收中被擦除,这样就不会有读取掉速的问题(实际上已经变成新文件了)。

如果老文件平时频繁地被读取,但从不产生内容修改或写入,这种情形其实也简单。为了避免读取干扰造成数据出错率上升,SSD主控会记录每个闪存位置的读取次数,达到一定阈值之后就会着手搬迁数据,把它写入到其他位置,并擦除旧Block。所以也不用特别担心频繁读取但从不改写的文件读速下滑,进而影响到使用性能。

那么现在剩下的就是平时电脑使用中,既不经常读取也从不修改写入的文件。这些文件有个外号叫僵尸文件,从原理上来说,它是比较容易产生旧数据掉速现象的。不过既然平时很少读取,那么对日常使用的性能影响其实也比较小,主控可以等待其闪存单元读取错误率达到一定水平后再行刷新。如果在刷新之前测试它的读取速度,我们可能会看到明显的掉速。

本文从旧数据读取掉速话题开始,介绍了两种不同测试方法的原理,并以龟甲T3000作为实例进行了验证。最后,我们分析了掉速的成因、和纠错算法的关系、数据刷新的影响等等,希望可以为大家提升认知的帮助。

本帖子中包含更多资源

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

x

评分

参与人数 2绝对值 +2 收起 理由
dboy99 + 1 很给力!
维他命W + 1 很给力!

查看全部评分

dboy99 发表于 2020-12-29 16:21 | 显示全部楼层
本帖最后由 dboy99 于 2020-12-29 16:25 编辑

终于等来了,很赞
在龟甲这个产品上,bics3颗粒没出现掉速,这意味着wd的掉速可能与WD的固件策略有关
yhhuada66 发表于 2020-12-29 21:17 | 显示全部楼层
总结来说就是主控和固件没有那么智能,测试用的软件也不能很好反应实际情况。当时那些人在贴吧里说这个事的时候,我就是冷眼旁观的,一方面是因为我现在用傲腾800p,没这个担忧,另外一方面也是对这些人闲得没事就测来测去的行为感觉很迷惑,哎
印第安纳琼斯 发表于 2020-12-29 23:30 | 显示全部楼层
就是说此事不足为虑咯。来,接着奏乐,接着舞!
echo_my 发表于 2020-12-30 09:34 | 显示全部楼层
dboy99 发表于 2020-12-29 16:21
终于等来了,很赞
在龟甲这个产品上,bics3颗粒没出现掉速,这意味着wd的掉速可能与WD的固件策略有关
...

扯吧,这个测试和别人反映的冷数据问题测试所用方法都不一样(暂且不说说的方法更合理),你就能得出这样的结论?

最起码也得是拿最近闹得沸沸扬扬的那款产品来按照楼主的测试方法进行烘烤,再测试对比才能判定吧,就我个人猜测,在楼主这种测试方法下,蓝盘依然是OK的!
Apprentice-Mark 发表于 2020-12-30 10:46 | 显示全部楼层
也不看下蓝盘的主控是多弱鸡 哈哈哈哈哈
石头 发表于 2020-12-30 15:09 | 显示全部楼层
echo_my 发表于 2020-12-30 09:34
扯吧,这个测试和别人反映的冷数据问题测试所用方法都不一样(暂且不说说的方法更合理),你就能得出这样 ...

如果说测试方法不一样,结论就不一样,那么只能说之前那个观点无法证伪,不属于科学,反倒更像是玄学。。。

其实说那么多都没用,看行业标准就完了,没有规定什么冷数据不能掉速一说吧就好比非要拿轮式越野车跑泥路,陷进去就说车子设计不行?没这个道理吧。
echo_my 发表于 2020-12-31 09:34 | 显示全部楼层
石头 发表于 2020-12-30 15:09
如果说测试方法不一样,结论就不一样,那么只能说之前那个观点无法证伪,不属于科学,反倒更像是玄学。。 ...

并非质疑楼主的测试方法,仅是针对楼上的那位由楼主的测试结果就臆测西数的盘比龟甲的这个固件差


石头 发表于 2020-12-31 13:56 | 显示全部楼层
echo_my 发表于 2020-12-31 09:34
并非质疑楼主的测试方法,仅是针对楼上的那位由楼主的测试结果就臆测西数的盘比龟甲的这个固件差

他没说差,只是说策略不一样。
echo_my 发表于 2020-12-31 15:29 | 显示全部楼层
石头 发表于 2020-12-31 13:56
他没说差,只是说策略不一样。

“终于等来了,很赞
在龟甲这个产品上,bics3颗粒没出现掉速,这意味着wd的掉速可能与WD的固件策略有关"

这是楼上那位的原话

他认定龟甲没掉速,WD掉速,不是吗?先不谈策略策略谁优谁差,但你起码也得在同样的测试方法下才能比较和评判吧!
石头 发表于 2020-12-31 22:25 | 显示全部楼层
echo_my 发表于 2020-12-31 15:29
“终于等来了,很赞
在龟甲这个产品上,bics3颗粒没出现掉速,这意味着wd的掉速可能与WD的固件策略有关"
...

得全面看。。。。没掉速不一定就好,掉速也不一定就不好,因为固态存储又不是只看一种速度,还有很多其他关键参数啊。。。他没说代表差的意思啊。。。。

airman 发表于 2021-1-1 16:35 | 显示全部楼层
本帖最后由 airman 于 2021-1-1 16:39 编辑

B站潮玩客说SN750和SN550没有掉速,掉速的是SATA的SSD盘。
tsammammb 发表于 2021-1-2 14:28 | 显示全部楼层
airman 发表于 2021-1-1 16:35
B站潮玩客说SN750和SN550没有掉速,掉速的是SATA的SSD盘。

早期第三方用BiCS3颗粒也有掉速,比如海康C2000(PRO)换紫光颗粒前的版本,西数自家的NVME倒是缺乏有实锤意义的证据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部