论文标题
持续数据保留模型
Persistent Data Retention Models
论文作者
论文摘要
非挥发性内存设备可能很快成为主内存的一部分,并且寻求通过负载和商店直接访问持续内存的编程模型,以最大程度地利用这些新设备的性能好处。直接访问引入了新的挑战。在这项工作中,我们确定了用于持续记忆的编程的重要方面:持久数据保留模型。 持久数据保留模型描述了使用该代码的代码进行修改时持久数据发生的情况。我们确定了先前工作中存在的两个模型,但不描述为重置和手动模型,我们提出了一种称为自动模型的新模型。当程序更改导致性能开销并写入放大时,重置模型会丢弃所有持续数据。相比之下,如果要保留数据,手动模型依赖于程序员实现将数据从程序的一个版本升级到下一个的代码。这减少了开销,但给程序员带来了更大的负担。 我们建议自动模型通过自动化一些或全部转换来协助程序员。我们描述了一种这样的自动方法,即懒惰扩展的数据结构,它使用语言扩展和编译器支持来减少与更新持续数据相关的工作和复杂性。我们在使用内核和TPC-C应用程序的持续内存开发套件(PMDK)的背景下评估了我们的PDRM。手动模型的平均开销为2.90%至4.10%,LED平均显示了0.45%至10.27%的开销,具体取决于工作量。与手动模型相比,LED的写入数量减少了26.36%。此外,LED通过依靠编译器迁移持续数据来大大降低编程复杂性。
Non-Volatile Memory devices may soon be a part of main memory, and programming models that give programmers direct access to persistent memory through loads and stores are sought to maximize the performance benefits of these new devices. Direct access introduces new challenges. In this work, we identify an important aspect of programming for persistent memory: the persistent data retention model. A Persistent Data Retention Model describes what happens to persistent data when code that uses it is modified. We identify two models present in prior work but not described as such, the Reset and Manual Model, and we propose a new one called the Automatic Model. The Reset model discards all persistent data when a program changes leading to performance overheads and write amplification. In contrast, if data is to be retained, the Manual Model relies on the programmer to implement code that upgrades data from one version of the program to the next. This reduces overheads but places a larger burden on the programmer. We propose the Automatic Model to assist a programmer by automating some or all of the conversion. We describe one such automatic approach, Lazily Extendible Data Structures, that uses language extensions and compiler support to reduce the effort and complexity associated with updating persistent data. We evaluate our PDRMs in the context of the Persistent Memory Development Kit (PMDK) using kernels and the TPC-C application. Manual Model shows an overhead of 2.90% to 4.10% on average, and LEDS shows overhead of 0.45% to 10.27% on average, depending on the workload. LEDS reduces the number of writes by 26.36% compared to Manual Model. Furthermore, LEDS significantly reduces the programming complexity by relying on the compiler to migrate persistent data.