进入正文

基于FDP SSD的RocksDB写放大优化

撰稿人:齐辉,西安三星电子研究所

  • 邮件

作为SSD的关键指标,写放大(Write Amplification, WA)始终是SSD领域亟待攻克的技术难题之一。其本质表现为SSD的实际物理写入量超过主机原始请求写入量。这一现象的根本原因在于NAND闪存介质必须以块(Block)为单位进行擦除,而主机端的写入请求往往以页(Page)为单位分散分布于多个块中。当某块内有效数据占比低于阈值时,SSD控制器启动垃圾回收(Garbage Collection, GC)机制,将尚存的有效数据搬运至新擦除的块中,同时释放原块以供复用,这一过程必然产生额外的写入量。这些额外的写开销不仅影响系统整体性能,导致吞吐量下降和延迟升高,还会缩短SSD的使用寿命。

 

这一挑战推动了SSD领域的一个重要研究方向—数据放置技术。SSD数据放置技术是通过硬件与软件的深度协同设计,对主机数据在SSD介质中的物理布局进行优化的技术方案,其核心在于通过降低GC的触发频率,从根本上抑制写放大(Write Amplification, WA)效应的产生机制。

 

NVMe v2.1规范所定义的灵活数据放置(Flexible Data Placement, FDP)技术,既从底层闪存管理层面显著减少无效GC操作引发的超额写入流量,又通过FDP的控制指令集降低了上层存储栈的适配复杂度。此外,FDP还具有向后兼容能力,能够复用当前的软件栈,最终在解决写放大问题与软件生态兼容性之间建立了技术平衡点。FDP突破了传统SSD被动式数据管理的局限,通过向主机公开设备资源信息,并提供数据分类放置接口,使主机能够根据数据特性(如冷/热数据)主动将数据分类放置在SSD上不同的存储单元中。这一机制实现了数据的分流隔离和存储单元的精细化布局,从根本上解决了不同特性数据混合存储导致的的冗余搬移问题。关于FDP技术的实现机制的深度解析,可参考我们发布在ODCC官网上的《FDP SSD技术与应用白皮书》

 

Linux虚拟文件系统(VFS)从版本4.13起,定义了文件生命周期的管理机制,分别为SHORT(短周期), MEDIUM(中周期), LONG(长周期)和EXTREME(超长周期)。应用可通过fcntl()系统调用对文件显式的指定上述生命周期等级。此外,VFS还定义了NOT_SET和NONE两种类型,NOT_SET为VFS默认类型,表示当文件没有被显示声明生命周期时的类型。NONE表示文件不关联任何生命周期属性的配置。该机制与FDP SSD相结合时,可将不同生命周期的文件映射至FDP内部预设数据流中降低写放大效应。

 

RocksDB是Meta公司开源的一款高性能嵌入式键值对存储系统,其核心架构基于Log-Structured Merge-Tree(LSM-Tree)算法设计,采用分层存储结构进行数据管理,通过追加写(Append-only)与合并(Compaction)两大核心机制实现高吞吐与低延迟特性。其中,SSTable(Sorted String Table),是RocksDB持久化存储的核心文件,以键值对有序序列的形式存储数据,并按层级(Level)进行组织。较新的数据存储在Level0中,较老的数据随着合并(Compaction)过程逐步归并在编号更高的Level中。

 

RocksDB默认的数据分类策略是将文件的层级特性映射为VFS的文件生命周期标识,具体表现为:预写日志(WAL)文件被标记为SHORT;Level0和Level1的SSTable文件被标记为MEDIUM;Level2的 SSTable文件被标记为LONG;Level3及更高层级的SSTable文件则被标记为EXTREME;其它文件(包括MANIFEST、CURRENT、检查点日志等)未进行显式生命周期标记,默认保留为NOT_SET标识。

 

通过对RocksDB的数据分类策略进行系统性分析,我们发现SSTable文件在LSM-Tree层级中的生命周期存在显著的阶段性分布特征:位于Level0至Level3的SSTable 文件具有相对较短的驻留周期,而Level4以及上的文件则展现出最长的存活时间。基于这一观测结果,本实验摒弃了RocksDB原生的数据分类策略,转而提出一种优化的分类方案。即WAL文件标记保持不变,将Level0~3文件标记为MEDIUM,Level4文件标记为LONG,Level5及以上文件标记为 EXTREME,其余未归类文件统一标记为NOT_SET。如表1所示:

表1:RocksDB分类策略对比

 

我们采用FDP SSD(型号U.2 PM9D3a,7.68TB容量),针对优化前后的RocksDB分类方案进行了对比测试。通过YCSB基准测试工具对2亿条记录进行数据加载(Load)与更新(Update)操作,全面评估不同分类策略的表现。测试结果表明,RocksDB的原生分类方案在FDP SSD上的WAF相比普通SSD降低了约8%,而优化后的分类方案将WAF显著降低30%。此外,优化后的分类方案使每秒操作数(OPS)提升了10%,同时p99.9延迟得到了55%的改善。

 

图1. RocksDB在关闭FDP,开启FDP使用原生分类策略和优化分类策略的WAF对比

 

图2. 写放大和SSD容量利用率的相关性

 

图3. RocksDB在关闭FDP,
开启FDP使用优化分类策略的性能对比

 

除了在文件系统层面支持FDP SSD外,我们还为RocksDB开发了基于FDP SSD的端到端解决方案。RocksDB通过抽象封装API支持多种存储后端,我们开发了RocksDB扩展插件—TorFS。该插件通过深度集成FDP特性,实现了面向FDP SSD的数据分流。在IO调度层,依托xNVMe开源库实现多路径IO的支持。为促进生态发展,TorFS提供了标准化IO接口,允许第三方开发者集成定制化的IO路径。

图4. TorFS架构

 

基于TorFS的端到端方案进行测试,测试结果表明,RocksDB成功实现了对写放大效应的显著抑制,其写放大因子(WAF)值近乎趋近于理论极限的1,同时系统性能指标达到最优水平,展现出低延迟、高吞吐量与稳定持久化的综合优势。

 

图5. RocksDB使用TorFS端到端解决方案的写放大和性能

 

上述实验证实,通过对数据生命周期管理,FDP技术显著提升了SSD的性能与寿命指标。我们期待将这项技术及优势带给整个超大规模数据中心。我们致力于将这一技术及优势推广至超大规模数据中心生态系统,以实现存储架构中数据布局与底层介质特性的深度适配。

 

参考文献:

[1] "NVM Express Base Specification 2.1"
 
[2]《FDP SSD技术与应用白皮书》
 
[3] "Hyperscale Innovation: Flexible Data Placement Mode (FDP)"
 
[4] "NVMe FDP - A promising new SSD data placement approach"
 
[5] "Introduction to Flexible Data Placement: A New Era of Optimized Data Management"
 
 
[7] Getting Started with Flexible Data Placement (FDP)
 
 

 
本页的内容仅供参考。三星或其任何高级职员、顾问、代理或雇员对本页所载信息、声明、意见或事项的准确性、合理性或完整性不作任何陈述或保证(无论是明示或暗示),并且按“现状”提供。对于因使用本页面内容或与本页面内容相关的其他内容而造成的任何损害,三星概不负责。本页中的任何内容均不授予您对本文档中提供的信息、材料或内容的任何许可证或权利,也不授予您任何其他知识产权。
 
本页的内容可能还包括前瞻性的陈述。前瞻性声明并不能保证未来的表现,并且三星、市场或三星运营的行业的实际发展可能与本页中包含的前瞻性声明所提出或建议的存在差异。