Hippocrates: Healing persistent memory bugs without doing any harm

20Citations
Citations of this article
29Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Persistent memory (PM) technologies aim to revolutionize storage systems, providing persistent storage at near-DRAM speeds. Alas, programming PM systems is error-prone, as the misuse or omission of the durability mechanisms (i.e., cache flushes and memory fences) can lead to durability bugs (i.e., unflushed updates in CPU caches that violate crash consistency). PM-specific testing and debugging tools can help developers find these bugs, however even with such tools, fixing durability bugs can be challenging. To determine the reason behind this difficulty, we first study durability bugs and find that although the solution to a durability bug seems simple, the actual reasoning behind the fix can be complicated and time-consuming. Overall, the severity of these bugs coupled with the difficultly of developing fixes for them motivates us to consider automated approaches to fixing durability bugs. We introduce Hippocrates, a system that automatically fixes durability bugs in PM systems. Hippocrates automatically performs the complex reasoning behind durability bug fixes, relieving developers of time-consuming bug fixes. Hippocrates's fixes are guaranteed to be safe, as they are guaranteed to not introduce new bugs ("do no harm"). We use Hippocrates to automatically fix 23 durability bugs in realworld and research systems. We show that Hippocrates produces fixes that are functionally equivalent to developer fixes. We then show that solely using Hippocrates's fixes, we can create a PM port of Redis which has performance rivaling and exceeding the performance of a manually-developed PM-port of Redis.

Author supplied keywords

Cite

CITATION STYLE

APA

Neal, I., Quinn, A., & Kasikci, B. (2021). Hippocrates: Healing persistent memory bugs without doing any harm. In International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS (pp. 401–414). Association for Computing Machinery. https://doi.org/10.1145/3445814.3446694

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free