信息存储系统教育部重点实验室

博士生丁波的论文被期刊TC录用


持久内存(Persistent Memory, PM)因其低延迟和数据持久性,成为下一代存储技术的理想选择。然而,传统的块设备I/O软件栈冗长,限制了PM的访问效率。现有的解决方案大多采用内存映射的方式来访问PM,尽管这种方式能够显著缩短I/O路径、提高性能,但由于直接将文件映射到用户地址空间,数据易受程序错误或系统崩溃的影响,从而引发数据完整性和一致性问题,使得数据可靠性无法得到保障。通常,需要额外的保护措施来解决这些可靠性问题,但这些措施往往会增加系统开销,进而影响整体性能。

在冯丹教授和童薇副教授的指导下,实验室的博士生丁波设计并开发了一种名为RMMIO的用户空间I/O库。RMMIO的设计旨在解决持久内存系统中内存映射I/O的性能与可靠性之间的冲突问题。具体来说,RMMIO通过以下三个关键技术实现这一目标:

1. 持久页缓存(Persistent Page Cache, PPcache):为了加速用户I/O请求,RMMIO在内核空间的持久内存文件系统之上引入了一个用户空间缓存层,即持久页缓存。这个缓存层允许数据直接驻留在用户空间,并通过内存映射的方式进行访问,消除了频繁的系统调用开销,极大缩短了I/O路径。同时,PPcache在保持与内核文件系统兼容的基础上,实现了接近原生内存映射I/O的性能。

图1 RMMIO架构图

2. 优化的写前日志(Write-Ahead Log, WAL)机制:数据一致性是持久内存系统面临的重要挑战之一。传统的WAL机制虽然能够保证数据的一致性,但会带来显著的性能开销。RMMIO通过引入两级缓存架构,在不增加额外写入负担的情况下,提供了优化的原子I/O操作(Atomic I/O)。具体来说,RMMIO利用缓存中的旧数据作为撤销日志(undo log),避免了额外的数据复制操作,从而在确保数据一致性的同时,保持了高效的I/O性能。

图2 两层缓存结构

3. 自动快照与增量快照机制(Auto-Snapshot and Incremental Snapshot Mechanism):数据完整性是持久内存系统面临的另一大挑战。为了避免用户空间乱写导致的数据损坏,RMMIO在预定义的时间间隔内自动捕获快照,确保系统在发生数据损坏时能够快速回滚到最近的完整性状态。通过快照合并技术(Snapshot Merging),RMMIO能够有效管理快照的数量和内存使用,并利用“快速扫描”(Fast Scanning)和“影子迁移”(Shadow Migration)技术减少持久内存的读写操作,降低系统开销。此外,增量快照机制仅记录自上次快照以来的变化部分,进一步减少了存储需求和数据复制的负担。最后,RMMIO的持久内存资源管理策略(Persistent Memory Resource Management),包括垃圾回收(Garbage Collection)和内存池扩展(Memory Pool Extension),确保了系统在高负载下的稳定性和性能表现。

图3 自动快照和快照合并示意图

实验证明,RMMIO在保证数据可靠性的前提下,显著提升了PM系统的I/O性能。在微基准测试中,RMMIO的吞吐量相比现有的PM文件系统ext4-DAX提高了8.49倍,相比最先进的MMIO方案提高了2.31倍。在实际应用中,使用RMMIO加速的RocksDB数据库系统的吞吐量最高提升了7.06倍。自动快照能够在有限的持久内存资源下高效运行,其性能影响最低仅为4.5%。

图4 RMMIO性能分析

该研究工作题为“Enabling Reliable Memory-Mapped I/O With Auto-Snapshot for Persistent Memory Systems”,已在《IEEE Transactions on Computers》(CCF A类)上发表,并得到了国家自然科学基金项目(61832007, 61821003, 62172178)的支持。

注:本文为原创,如转载请注明出处。

分享文章

Share

最新发布

Latest