The performance properties of byte-addressable persistent memory (PMEM) have the potential to significantly improve system performance over a wide spectrum of applications. But persistent memory brings considerable new challenges to the programmer: only 8-byte write atomicity, out of order flush and availability limited by node failure. It's possible to work with the atomicity and ordering constraints of PMEM directly by carefully sequencing the order of store operations and inserting explicit flush and fence operations at each ordering point. But this is tedious and error-prone: too many flush operations defeat the performance benefits of PMEM, and even with generous use, it is difficult to prove that a given program is crash-consistent. Logging is a great abstraction to deal with these issues but prior work on PMEM logging has not successfully hidden the idiosyncrasies of PMEM. Moreover, shortcomings in the log interface and design have prevented attainment of full PMEM performance. We believe that a log design that hides the idiosyncrasies from programmers while delivering full performance is key to success. In this paper, we present the design and implementation of Arcadia, a generic replicated log on PMEM to address these problems. Arcadia handles atomicity, integrity, and replication of log records to reduce programmer burden. Our design has several novel aspects including concurrent log writes with in-order commit, atomicity and integrity primitives for local and remote PMEM writes, and a frequency-based log force policy for providing low overhead persistence with guaranteed bounded loss of uncommitted records. Our evaluation shows that Arcadia outperforms state-of-the-art PMEM logs, such as PMDK's libpmemlog, FLEX, and Query Fresh by several times while providing stronger log record durability guarantees. We expect Arcadia to become the leading off-the-shelf PMEM log design.
翻译:字型可处理的持久性内存( PMEM) 的性能特性有可能大大改善系统在广泛应用中的性能。 但耐久性内存给程序员带来了相当的新挑战: 仅8 字写原子, 出自秩序冲洗, 可用受节点故障限制。 可以通过仔细排序存储操作的顺序, 在每个订购点插入明确的冲洗和栅栏操作, 直接处理 PMEM 的原子性和定购限制。 但是, 这既令人厌烦又容易出错: 太多的冲洗操作使PMEM 的性能效益大打折扣, 甚至是慷慨的使用, 很难证明给程序员带来失常的内向性。 登入是一个非常抽象的写原子原子原子原子原子原子内存记录, 平面内存的直径直径直路路路路路路路路路路路程记录也存在一些新问题。