Persistent Memory (PM) is a new storage technology thatbrings high performance, byte addressability, and persistency for a lesser cost than DRAM. Due to cache volatility and store reordering, developers must use explicit instructions (e.g.: flush and fence) to guarantee that the application state remains consistent upon crashes. This is difficult to get right and, in fact, several tools have been created to detect bugs in PM programs. To overcome this difficulty, programmers tend to be overly conservative, for instance, by enforcing unnecessary ordering constraints, which partially forfeits the performance benefits of using PM. In this paper, we study the impact that different combinations of persistency instructions have in several PM programs and found that a specific combination can lead to performance improvements while preserving the original crash-consistency semantics. Based on these results we developed Bentō an automatic and black-box binary rewriter that can boost the performance of existing PM programs by up to 15% with minimal programmer effort.
翻译:持久内存(PM)是一种新型存储技术,其以低于DRAM的成本提供了高性能、字节寻址能力和持久性。由于缓存易失性和存储重排序,开发者必须使用显式指令(如刷新和屏障)来确保应用状态在崩溃时保持一致性。这难以正确实现,事实上已有多种工具被开发用于检测PM程序中的错误。为克服这一困难,程序员往往过于保守,例如强制施加不必要的顺序约束,这在一定程度上丧失了使用PM的性能优势。本文研究了不同持久性指令组合对多个PM程序的影响,发现特定组合能在保持原有崩溃一致性语义的同时带来性能提升。基于这些结果,我们开发了Bentō——一种自动化的黑盒二进制重写器,能够以最小编程工作量将现有PM程序的性能提升高达15%。