AutoPersist: an easy-to-use Java NVM framework based on reachability

AutoPersist: an easy-to-use Java NVM framework based on reachability
复制标题

DOI:
10.1145/3314221.3314608
复制
发表时间:
2019-06
期刊:
Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
通讯作者:
Thomas Shull;Jian Huang;J. Torrellas
Thomas Shull;Jian Huang;J. Torrellas
中科院分区:
其他
文献类型:
--
作者:
Thomas Shull;Jian Huang;J. Torrellas

文献摘要

相似文献

字节可寻址的非易失性存储器(NVM)正在成为一种革命性的存储器技术,其提供持久性、接近DRAM的性能和可扩展的容量。为了便于其使用,已经提出了许多NVM编程模型。然而,大多数模型要求程序员明确指定应驻留在NVM中的数据结构或对象。这样的要求增加了程序员的负担,使软件开发复杂化,并引入了正确性和性能错误的机会。我们认为,要求程序员识别应该驻留在NVM中的数据结构是站不住脚的。相反,程序员应该只需要识别持久的根--恢复时持久数据结构的入口点。然后,NVM编程框架应该自动确保从这些根可到达的所有数据结构都在NVM中,并且以直观的顺序持久地完成对这些数据结构的存储。为此,我们提出了一个新的NVM编程框架,名为AutoPersists,只需要程序员确定持久的根源。然后AutoPersists以自动和透明的方式持久化所有可以从持久根访问的数据结构。我们将AutoPersists作为Java语言的线程安全扩展来实现,并对运行在英特尔Optane DC持久内存上的各种应用程序进行了实验。我们证明,AutoPersists需要最少的代码修改,并显着优于专家标记的Java NVM应用程序。
Byte-addressable, non-volatile memory (NVM) is emerging as a revolutionary memory technology that provides persistency, near-DRAM performance, and scalable capacity. To facilitate its use, many NVM programming models have been proposed. However, most models require programmers to explicitly specify the data structures or objects that should reside in NVM. Such requirement increases the burden on programmers, complicates software development, and introduces opportunities for correctness and performance bugs. We believe that requiring programmers to identify the data structures that should reside in NVM is untenable. Instead, programmers should only be required to identify durable roots - the entry points to the persistent data structures at recovery time. The NVM programming framework should then automatically ensure that all the data structures reachable from these roots are in NVM, and stores to these data structures are persistently completed in an intuitive order. To this end, we present a new NVM programming framework, named AutoPersist, that only requires programmers to identify durable roots. AutoPersist then persists all the data structures that can be reached from the durable roots in an automated and transparent manner. We implement AutoPersist as a thread-safe extension to the Java language and perform experiments with a variety of applications running on Intel Optane DC persistent memory. We demonstrate that AutoPersist requires minimal code modifications, and significantly outperforms expert-marked Java NVM applications.