SoCC 2024 Paper CXL论文阅读笔记整理
问题
基于Compute eXpress Link(CXL)的固态硬盘(CXL-SSD),集成了前端内置DRAM和后端大容量闪存,利用CXL.mem接口提供类似于持久内存的内存扩展,但连接到PCIe总线而不是传统的内存总线[7,11,15,20,39,55]。当DRAM/闪存容量比较低时,由于DRAM和闪存之间巨大的延迟差距和粒度不匹配,以及不可知的应用行为,完全隐藏后端闪存(例如2TB)的长延迟是具有挑战性的[55]。
三星CMM-H[7,39]等CXL-SSD承诺提供CXL.mem和CXL.io的双模接口,并在内部将后端大容量闪存划分为存储区和SSD区,分别存储这两个接口的数据。因此CXL-SSD可以同时支持基于内存和块的数据路径。但CXL-SSD仅以概念协议的形式存在,没有双方同意的规范和实现细节。
通过对比CXL和SSD的带宽(表1)和延迟,CXL内存并不具有压倒性的带宽优势,但CXL延迟明显低于SSD的访问延迟。
因此提供了两个关键的见解:
-
CXL.io数据路径可以有效地处理大型数据访问,直接利用SSD的高内部并行性,避免通过小型但昂贵的内置DRAM缓存。
-
CXL.mem数据路径可以快速处理缓存中的小规模数据访问。
因此,协同使用双模式的两条数据路径有望充分发挥CXL-SSD的性能,但现有的存储系统不能以协同和互补的方式同时利用基于内存和块的数据路径。
本文方法
本文提出了RomeFS,一个支持CXL-SSD的文件系统,通过协同但优先利用互补的CXL.mem和CXL.io数据路径来处理文件操作。
-
双路径数据布局,将元数据存储在CXL.mem数据区,将文件数据存储在CXL.mem和CXL.io数据区,进一步将大块对齐的文件分配给CXL.io数据路径,将小块或剩余的未对齐文件分配给CXL.mem数据路径。在运行时协同使用两个数据路径对文件数据进行双路径访问。
-
混合并行文件索引,以高效定位两条数据路径上的文件数据。进一步设计了写时合并(MOW)和按块数据日志回写(LWB)机制,以减轻文件数据碎片并及时释放CXL-SSD的内存区域。
-
元数据日志记录和协同双路径事务写入,以低开销确保写入原子性和崩溃一致性。
在两个仿真硬件平台上实现并评估了RomeFS。实验表明,RomeFS的表现优于基于块的文件系统和基于PM的文件系统,分别提高了14.24倍和4.89倍。
总结
针对CXL-SSD硬件下的文件系统,CXL-SSD提供CXL.mem和CXL.io双模接口,分别连接内存区和SSD区,但现有文件系统无法适应这种新架构。本文提出RomeFS,协同利用CXL.mem和CXL.io数据路径来处理文件操作,包括3个技术:(1)双路径数据布局,将元数据存储在CXL.mem数据区,将文件数据存储在CXL.mem和CXL.io数据区,运行时协同使用两个数据路径对文件数据进行双路径访问。(2)混合并行文件索引,定位两条数据路径上的文件数据。设计了写时合并(MOW)和按块数据日志回写(LWB)机制,以减轻文件数据碎片。(3)元数据日志记录和协同双路径事务写入,以低开销确保写入原子性和崩溃一致性。