ATC 2023 Paper 分布式元数据论文汇总
问题
快速、字节寻址的持久性内存(PM)正在产品中变得越来越现实。然而,使传统的内核文件系统完全支持PM需要大量的工作,面临着在块级访问粒度和字节寻址之间转换的挑战。此外,新的针对PM的文件系统仍然远未达到生产的水平,难以广泛使用。
挑战
随着存储设备变得更快,分层存储堆栈的开销变得更加显著。例如,软件开销在低延迟(3us)NVMe SSD上贡献了50%的读取延迟[45]。随着存储设备变得更快、更接近CPU,软件开销变得更加占主导地位。英特尔的Optane持久内存[10]位于内存总线上,读取延迟低至~170 ns[44]。
本文方法
我们提出了P2CACHE,一种新颖的内核缓存机制,探讨了在快速、字节寻址的PM面前,传统的内核文件系统如何有效演变。
-
在PM和DRAM的分层内存系统上利用读/写可区分的内存层次结构。利用PM为所有写请求提供即时的数据耐久性和强大的崩溃一致性,使用DRAM为大多数读I/O提供高I/O性能。
-
引入了一个位于VFS层下方的持久缓存。使用PM来快速同步地持久化/缓冲文件系统的元数据/数据更新,确保即时的数据耐久性和强大的崩溃一致性。然后,缓冲的操作通过现有的I/O接口异步应用于底层的内核文件系统,确保与内核文件系统的兼容性。持久缓存建立在一个轻量级的操作日志之上,该日志捕获来自VFS的文件系统更新,并将它们记录在一个预写式日志中。利用PM的字节寻址能力,将复制操作与写操作解耦来高效地持久化元数据/数据更新,在写操作被同步记录的同时异步执行数据复制。
-
进一步优化了页面缓存,通过更快但易失性的DRAM为大多数读操作提供服务。利用了设备级并行性让两个缓存协同高效地工作,即持久缓存和页面缓存。我们观察到将数据同时写入PM和DRAM的I/O延迟几乎与仅将数据写入PM的延迟相同,因为对DRAM的(额外)复制的延迟被并行但较慢的PM写隐藏起来。因此我们采用了一个简单而有效的包容式缓存模型,相同数据的多个副本存储在分层内存中,而最顶层(即DRAM)始终包含最新版本。包容式缓存模型简化了两个缓存之间的同步:对于写操作,更新两个缓存;对于读操作,从页面缓存、持久缓存和底层文件系统中顺序搜索,直到首次找到数据。
开源代码:GitHub - YesZhen/P2CACHE
我们的评估表明,P2CACHE可以显著提高传统内核文件系统的性能,例如,在Ext4上对RocksDB的提高达到了200倍,同时为它们提供即时的数据耐久性和强大的崩溃一致性,类似于专为PM设计的文件系统。
实验
实验环境:两个12核Intel Xeon Gold 5317处理器(3.0 GHz,18M Cache)的ASUS RS700-E10-RS12U服务器,每个处理器具有2个NUMA节点,每个节点具有256 GB DRAM。启用turbo boost时禁用了超线程。为每个NUMA节点安装了四个128 GB(总计512 GB)的Intel Optane 200系列持久内存和一个2 TB的Samsung PM883 SSD。
数据集:microbenchmark,Filebench[6],db_bench[1],MinIO[14]
实验对比:每秒操作数(Mops),IOPS
总结
优化利用PM的文件系统,传统方法需要对原始文件系统进行大量修改以支持PM使用,作者提出利用PM和DRAM构建缓存机制,不修改现有文件系统的同时利用PM的优势:高I/O性能、高I/O并发性、即时数据持久性和强一致性。提出在VFS下引入持久缓存,使用PM快速同步持久/缓充文件系统元数据/数据更新,随后异步应用于底层文件系统;利用DRAM和PM构建页面缓存,将数据写入PM的同时更新DRAM,读操作时利用DRAM缓存加速查找。