之前存储随笔有发布过一篇关于如何通过IO并发度提升性能相关的文章:
扩展阅读:SSD基础架构与NAND IO并发问题探讨
SSD整体优化策略就是要低延迟,高带宽,增加NAND的并发度。
本文,我们从另外一个角度来做一些讨论。现代SSD通过并行使用多个通道和芯片来实现高吞吐量,但过度的内部并行性无意中加剧了由于空间回收单位增大而导致的垃圾回收(GC)开销。
小编最近看到一篇来自于美国Syracuse大学与三星合作发布在HotStorage23的文章。结合小编自己的理解,节选部分核心内容分享给大家。希望阅读原文的同学,可以后台回复【SSD并发】获取原文。
文章开始,结合SSD并发与写放大的关联,抛出一个观点:SSD中的过度并发实际上是有害的。虽然大的超级块(SSD中每个芯片的一组块,这些块一起被写入)可以提高整体带宽,但这会导致高的GC开销,这种开销不仅影响SSD的寿命,还因其干扰而影响性能。问题的关键在于,固定大小的超级块无法同时实现高峰值性能和低GC开销。
文中的给出的例子是:同时运行四个FIO线程,将不同特性的数据写入具有不同内部并发的SSD,实验结果显示:
-
随着并行性从1/8增加到全并行发,写放大因子(WAF)增加到230%。
-
反常的是,全并行并没有实现最高的吞吐量,因为高WAF导致半并发配置的吞吐量几乎比全并行高出40%。
基于这一观察,作者设计了一种名为PLAN(Parallelism and Lifetime Aware Allocation)的新SSD并发管理和数据放置方案。
PLAN的主要思想是根据不同工作负载的需求提供不同级别的并发度。传统的SSD设计通常在整个驱动器上使用单一级别的并发度,而PLAN则适配不同的并发度:对于带宽密集型的I/O操作使用更高的并发度,而对于其他类型的操作则使用较低的并发度。这样做的目的是在减少垃圾回收(GC)开销的同时,提高整体的吞吐量。
PLAN实现核心思路主要包括:
-
灵活的超级块:传统SSD将数据块block组织成超级块superblock,其中包含每个芯片的一个块,以确保所有可用通道和芯片上的数据条带化,从而提高并行性和减少DRAM使用。然而,大的超级块作为GC单位会导致更高的写放大因子(WAF)。因此,PLAN通过减少每个通道使用的芯片数量来减小超级块的大小,同时保持所有通道对所有超级块的使用。默认配置为每个通道使用2个芯片(1/4并发),因为进一步降低并发会降低性能,而不会显著减少与基线相比的WAF。
-
基于寿命的数据分类:根据预测的数据寿命,SSD选择最适合的目标超级块来写入相似寿命的数据。这样可以将具有相似寿命的数据写入同一个超级块,从而优化GC过程并减少WAF。
-
完全在SSD内部实现:与之前需要应用程序、文件系统、操作系统或SSD协议修改的方法不同,PLAN完全在SSD内部实现。这意味着对用户来说是透明的,不需要进行任何额外的修改或训练,只需要更换SSD本身即可。
通过这种方式,PLAN能够在满足大型、顺序请求需要高并行性和大超级块的同时,满足小型、随机请求需要小超级块和高效GC的需求,从而在减少GC开销和提高整体性能之间取得平衡。