WD SN5000S固态硬盘深度评测:nCache 4.0算法表现不佳 2024-07-26 作者 C3P00 西部数据(Western Digital)推出的SN5000S固态硬盘(SSD)近期引起了存储界的广泛关注。这款定位于OEM市场的中高端QLC硬盘,采用了全新的nCache 4.0缓存算法,本应带来性能的飞跃。然而,经过深入测试,我们发现这款产品存在诸多问题,尤其是在高占用率和脏盘状态下表现令人失望。本文将从硬件规格、性能测试到算法分析,全方位剖析SN5000S的优缺点。 硬件规格:密度之王的诞生 SN5000S采用了西部数据自研的新一代主控芯片,搭配最新的B6Q NAND闪存。主控型号为A101 000171 A1,采用12nm工艺制程,大小与MAP1602相仿。B6Q NAND闪存采用162层QLC设计,单Die容量高达1Tb(1024Gb)。得益于更大的单Die容量和先进的封装技术,2TB容量版本仅需一颗NAND芯片即可实现,这使得SN5000S成为目前市面上密度最高的SSD,无出其右。 本次评测样品包括1TB和2TB两个容量版本,分别来自不同的OEM厂商。这种做法也反映了西部数据在供应链管理上的灵活性。 性能测试:空盘亮眼,满盘崩溃 空盘状态下的表现 在空盘状态下,SN5000S展现出了不俗的性能。使用CrystalDiskMark(CDM)测试,不同容量版本的成绩高度接近,可视为误差范围内。与几款基准盘对比,SN5000S在4K随机读取性能上表现出色,甚至超过了PC411。然而,4K随机写入性能相对较弱,低于PC411。值得一提的是,在4K混合读写测试中,SN5000S表现惊人,超越了P41P,仅次于顶级SSD PVC10。 切换到Ubuntu 23.04系统,使用FIO工具进行更精确的测试。结果显示,SN5000S的4K随机写入性能确实出色,但4K随机读取性能与CDM测试结果相反,在高队列深度下仅能达到600K IOPS,限制了其整体表现。不过,混合读写性能依然令人印象深刻,无论在高队列深度还是低队列深度下都表现出色,证明了nCache 4.0算法在空盘状态下的优秀设计。 在PCMark 10存储测试中,1TB版本获得了3281分的高分,超越了PM9A1,接近SN810和SN850的水平。2TB版本略逊,得分为3245。虽然这个成绩在所有样本中属于不错水平,但考虑到SN5000S比SN580具有更高的标称顺序传输速率和更优秀的4K混合性能,这个得分并不算特别出色。 3DMark Storage测试中,SN5000S的表现中规中矩。1TB版本得分3481,而2TB版本仅为3080,性能下降明显。考虑到QLC SSD通常不会用作仿真和计算的缓存盘,这项测试的重要性相对较低。 满盘状态下的灾难性表现 然而,当填充率达到75%时,SN5000S的性能急剧下降,表现堪称灾难。性能下降幅度远超预期,即使是以回收策略懒惰著称的Ti600和BM9C1也不至于如此。 通常情况下,QLC和TLC SSD可以通过全盘填0(Full0)操作来解决高脏盘度问题,强制进行垃圾回收(GC)和SLC缓存的回写(WriteBack)释放。然而,SN5000S在这方面表现异常: 1TB版本无论如何都无法恢复性能,PCMark 10得分仅为1283分,已经接近SATA SSD的水平。 2TB版本在75%填充率下的性能相对较好,但仍然存在显著下降。 3DMark Storage测试分数也出现巨大跌幅,已经可以与SATA SSD一较高下。 为什么会出现如此大的性能下滑?许多人可能会认为这是由于缓存耗尽(缓外)导致的。然而,通过深入分析PCMark 10的子项目成绩,我们发现真正的问题并非如此简单。 在进行75%填充率测试之前,第二个SN5000S样品经过了手动填0和TRIM操作,以确保SLC缓存的强制释放。然而,结果显示,真正灾难性的表现出现在4K随机读写项目上,尤其是CPS2和CPS3测试中。相比之下,顺序写入性能的下降幅度并不大。 对比两次3DMark测试结果,我们发现读取相关的项目下降更为严重。这让我们得出一个重要结论:导致SN5000S在高填充率下灾难性表现的主要因素不仅仅是缓存耗尽,更大的问题在于其极其糟糕的FTL(闪存转换层)算法。即使在轻度脏盘状态下,SN5000S也会出现严重的性能下降,尤其是在4K随机读取方面。 nCache 4.0算法分析:失败的设计 通过深入分析,我们可以将SN5000S的问题归结为三个主要方面:令人疑惑的SLC缓存策略、非常诡异的垃圾回收(GC)策略,以及在高度脏盘下极其失败的FTL映射表现。 1. 糟糕的SLC缓存策略 SN5000S采用了一种非常特殊的SLC缓存算法。通过FIO测试,我们发现其缓存外的写入速度呈现高度离散的特点,形成了三条明显的直线: 最上方:SLC写入+回写释放的最高速度,约300MB/s 中间:缓存外的算术平均速度,约209MB/s 最下方:SLC写入+回写惩罚的最低速度,仅76.8MB/s 这种高度离散的表现意味着用户在实际使用中会经历严重的性能波动。更令人费解的是,SN5000S并非采用单纯的全盘模拟策略,而是在缓存外阶段使用了类似于2263XT/2259XT的折叠算法。数据不会直接写入QLC区块,而是必须先写入动态或静态的SLC缓存,同时将其他数据释放到QLC区块。 这种设计导致了一个荒谬的数据流转过程: 主机写入数据到SLC缓存 SLC缓存空间不足,释放数据到QLC区块 一边填充SLC缓存,一边写入QLC区块 在高填充率情况下,可能还会出现数据先经过动态SLC缓存,释放到QLC后,又因为QLC中的读改写(REW)操作再次经过静态SLC缓存,最后再回到QLC中 这种算法不仅无法优化写入速度,也无法减少写入放大(WAF),反而因频繁的数据释放和动态映射严重增加了FTL的负担。 2. 莫名其妙的垃圾回收和回写策略 SN5000S的垃圾回收(GC)策略同样令人费解。无论是TRIM还是FSTRIM命令都无法有效改善其性能,甚至BIOS中的安全擦除(SE)功能也无法正确生效。然而,即使在闲置状态下,SN5000S也会自发进行GC和回写操作,但其方向是从QLC区块向SLC缓存转移数据。 根据西部数据的内部文档,nCache 4.0会尽可能将QLC区块内的数据转移到SLC缓存中,直到空间耗尽。这种做法与前文提到的SLC缓存策略相结合,造成了一个荒谬的循环:数据在SLC缓存、QLC区块和静态SLC缓存之间不断往复,最终又回到SLC缓存中。这种设计不仅浪费了大量的I/O资源,还严重影响了整体性能。 3. 失败的FTL设计 SN5000S最大的问题在于其FTL在脏盘状态下的表现极其糟糕。在性能异常时,SN5000S的读取性能会彻底崩溃,而顺序写入性能相对较好。使用FIO进行4K随机读取测试,结果令人震惊:仅有17K IOPS的读取性能,这个数字甚至低于许多入门级SSD。 造成这种情况的原因可能与SN5000S的SLC缓存策略有关。由于nCache 4.0的某些特性,FTL似乎只对SLC缓存内的数据进行优化(更可能是静态SLC缓存)。这也解释了为什么2TB版本的性能明显好于1TB版本。 在高占用率和中等脏盘度的情况下,数据随机分布在所有物理空间中。频繁的NAND内大量不同区块间数据读取和读改写操作不仅增加了读写延迟,还极大地增加了FTL查找的开销。即使在TRIM和全盘填0后,FTL的映射问题依然存在,导致性能直接崩溃。 结论:高密度之下的算法失败 尽管nCache 4.0算法在某些方面表现出色,如空盘状态下的优秀性能和看似较高的平均缓外速度,但其在高占用率和脏盘状态下的表现令人失望。SN5000S的问题主要源于以下几点: 复杂而低效的SLC缓存策略 不合理的垃圾回收和回写机制 在高负载下性能严重下降的FTL设计 值得注意的是,这些问题在2TB版本中得到了一定程度的缓解,主要得益于更大的物理空间。然而,整体而言,nCache 4.0算法的设计仍然存在诸多疑问。 西部数据在SN5000S上的尝试可以说是一次有趣但不太成功的实验。虽然在某些特定场景下表现尚可,但频繁出现的性能问题和难以解决的算法缺陷,使得这款产品难以在高端SSD市场中立足。对于消费者而言,在选购SSD时需要谨慎考虑SN5000S,尤其是在需要稳定高性能的应用场景中。 未来,西部数据需要在QLC SSD的算法优化上投入更多精力,以期在保持高密度优势的同时,提供更加稳定和可靠的性能表现。只有这样,才能在日益激烈的SSD市场中保持竞争力。 参考文献: HOMOLAB. (2023). QLC+nCache4.0? WD SN5000S算法分析. 微信公众号文章.
西部数据(Western Digital)推出的SN5000S固态硬盘(SSD)近期引起了存储界的广泛关注。这款定位于OEM市场的中高端QLC硬盘,采用了全新的nCache 4.0缓存算法,本应带来性能的飞跃。然而,经过深入测试,我们发现这款产品存在诸多问题,尤其是在高占用率和脏盘状态下表现令人失望。本文将从硬件规格、性能测试到算法分析,全方位剖析SN5000S的优缺点。
硬件规格:密度之王的诞生
SN5000S采用了西部数据自研的新一代主控芯片,搭配最新的B6Q NAND闪存。主控型号为A101 000171 A1,采用12nm工艺制程,大小与MAP1602相仿。B6Q NAND闪存采用162层QLC设计,单Die容量高达1Tb(1024Gb)。得益于更大的单Die容量和先进的封装技术,2TB容量版本仅需一颗NAND芯片即可实现,这使得SN5000S成为目前市面上密度最高的SSD,无出其右。
本次评测样品包括1TB和2TB两个容量版本,分别来自不同的OEM厂商。这种做法也反映了西部数据在供应链管理上的灵活性。
性能测试:空盘亮眼,满盘崩溃
空盘状态下的表现
在空盘状态下,SN5000S展现出了不俗的性能。使用CrystalDiskMark(CDM)测试,不同容量版本的成绩高度接近,可视为误差范围内。与几款基准盘对比,SN5000S在4K随机读取性能上表现出色,甚至超过了PC411。然而,4K随机写入性能相对较弱,低于PC411。值得一提的是,在4K混合读写测试中,SN5000S表现惊人,超越了P41P,仅次于顶级SSD PVC10。
切换到Ubuntu 23.04系统,使用FIO工具进行更精确的测试。结果显示,SN5000S的4K随机写入性能确实出色,但4K随机读取性能与CDM测试结果相反,在高队列深度下仅能达到600K IOPS,限制了其整体表现。不过,混合读写性能依然令人印象深刻,无论在高队列深度还是低队列深度下都表现出色,证明了nCache 4.0算法在空盘状态下的优秀设计。
在PCMark 10存储测试中,1TB版本获得了3281分的高分,超越了PM9A1,接近SN810和SN850的水平。2TB版本略逊,得分为3245。虽然这个成绩在所有样本中属于不错水平,但考虑到SN5000S比SN580具有更高的标称顺序传输速率和更优秀的4K混合性能,这个得分并不算特别出色。
3DMark Storage测试中,SN5000S的表现中规中矩。1TB版本得分3481,而2TB版本仅为3080,性能下降明显。考虑到QLC SSD通常不会用作仿真和计算的缓存盘,这项测试的重要性相对较低。
满盘状态下的灾难性表现
然而,当填充率达到75%时,SN5000S的性能急剧下降,表现堪称灾难。性能下降幅度远超预期,即使是以回收策略懒惰著称的Ti600和BM9C1也不至于如此。
通常情况下,QLC和TLC SSD可以通过全盘填0(Full0)操作来解决高脏盘度问题,强制进行垃圾回收(GC)和SLC缓存的回写(WriteBack)释放。然而,SN5000S在这方面表现异常:
为什么会出现如此大的性能下滑?许多人可能会认为这是由于缓存耗尽(缓外)导致的。然而,通过深入分析PCMark 10的子项目成绩,我们发现真正的问题并非如此简单。
在进行75%填充率测试之前,第二个SN5000S样品经过了手动填0和TRIM操作,以确保SLC缓存的强制释放。然而,结果显示,真正灾难性的表现出现在4K随机读写项目上,尤其是CPS2和CPS3测试中。相比之下,顺序写入性能的下降幅度并不大。
对比两次3DMark测试结果,我们发现读取相关的项目下降更为严重。这让我们得出一个重要结论:导致SN5000S在高填充率下灾难性表现的主要因素不仅仅是缓存耗尽,更大的问题在于其极其糟糕的FTL(闪存转换层)算法。即使在轻度脏盘状态下,SN5000S也会出现严重的性能下降,尤其是在4K随机读取方面。
nCache 4.0算法分析:失败的设计
通过深入分析,我们可以将SN5000S的问题归结为三个主要方面:令人疑惑的SLC缓存策略、非常诡异的垃圾回收(GC)策略,以及在高度脏盘下极其失败的FTL映射表现。
1. 糟糕的SLC缓存策略
SN5000S采用了一种非常特殊的SLC缓存算法。通过FIO测试,我们发现其缓存外的写入速度呈现高度离散的特点,形成了三条明显的直线:
这种高度离散的表现意味着用户在实际使用中会经历严重的性能波动。更令人费解的是,SN5000S并非采用单纯的全盘模拟策略,而是在缓存外阶段使用了类似于2263XT/2259XT的折叠算法。数据不会直接写入QLC区块,而是必须先写入动态或静态的SLC缓存,同时将其他数据释放到QLC区块。
这种设计导致了一个荒谬的数据流转过程:
这种算法不仅无法优化写入速度,也无法减少写入放大(WAF),反而因频繁的数据释放和动态映射严重增加了FTL的负担。
2. 莫名其妙的垃圾回收和回写策略
SN5000S的垃圾回收(GC)策略同样令人费解。无论是TRIM还是FSTRIM命令都无法有效改善其性能,甚至BIOS中的安全擦除(SE)功能也无法正确生效。然而,即使在闲置状态下,SN5000S也会自发进行GC和回写操作,但其方向是从QLC区块向SLC缓存转移数据。
根据西部数据的内部文档,nCache 4.0会尽可能将QLC区块内的数据转移到SLC缓存中,直到空间耗尽。这种做法与前文提到的SLC缓存策略相结合,造成了一个荒谬的循环:数据在SLC缓存、QLC区块和静态SLC缓存之间不断往复,最终又回到SLC缓存中。这种设计不仅浪费了大量的I/O资源,还严重影响了整体性能。
3. 失败的FTL设计
SN5000S最大的问题在于其FTL在脏盘状态下的表现极其糟糕。在性能异常时,SN5000S的读取性能会彻底崩溃,而顺序写入性能相对较好。使用FIO进行4K随机读取测试,结果令人震惊:仅有17K IOPS的读取性能,这个数字甚至低于许多入门级SSD。
造成这种情况的原因可能与SN5000S的SLC缓存策略有关。由于nCache 4.0的某些特性,FTL似乎只对SLC缓存内的数据进行优化(更可能是静态SLC缓存)。这也解释了为什么2TB版本的性能明显好于1TB版本。
在高占用率和中等脏盘度的情况下,数据随机分布在所有物理空间中。频繁的NAND内大量不同区块间数据读取和读改写操作不仅增加了读写延迟,还极大地增加了FTL查找的开销。即使在TRIM和全盘填0后,FTL的映射问题依然存在,导致性能直接崩溃。
结论:高密度之下的算法失败
尽管nCache 4.0算法在某些方面表现出色,如空盘状态下的优秀性能和看似较高的平均缓外速度,但其在高占用率和脏盘状态下的表现令人失望。SN5000S的问题主要源于以下几点:
值得注意的是,这些问题在2TB版本中得到了一定程度的缓解,主要得益于更大的物理空间。然而,整体而言,nCache 4.0算法的设计仍然存在诸多疑问。
西部数据在SN5000S上的尝试可以说是一次有趣但不太成功的实验。虽然在某些特定场景下表现尚可,但频繁出现的性能问题和难以解决的算法缺陷,使得这款产品难以在高端SSD市场中立足。对于消费者而言,在选购SSD时需要谨慎考虑SN5000S,尤其是在需要稳定高性能的应用场景中。
未来,西部数据需要在QLC SSD的算法优化上投入更多精力,以期在保持高密度优势的同时,提供更加稳定和可靠的性能表现。只有这样,才能在日益激烈的SSD市场中保持竞争力。
参考文献: