Corundum: Statically-enforced persistent memory safety

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

Abstract

Fast, byte-addressable, persistent main memories (PM) make it possible to build complex data structures that can survive system failures. Programming for PM is challenging, not least because it combines well-known programming challenges like locking, memory management, and pointer safety with novel PM-specific bug types. It also requires logging updates to PM to facilitate recovery after a crash. A misstep in any of these areas can corrupt data, leak resources, or prevent successful recovery after a crash. Existing PM libraries in a variety of languages-C, C++, Java, Go-simplify some of these problems, but they still require the programmer to learn (and flawlessly apply) complex rules to ensure correctness. Opportunities for data-destroying bugs abound. This paper presents Corundum, a Rust-based library with an idiomatic PM programming interface and leverages Rust's type system to statically avoid most common PM programming bugs. Corundum lets programmers develop persistent data structures using familiar Rust constructs and have confidence that they will be free of those bugs. We have implemented Corundum and found its performance to be as good as or better than Intel's widely-used PMDK library, HP's Atlas, Mnemosyne, and go-pmem.

Cite

CITATION STYLE

APA

Hoseinzadeh, M., & Swanson, S. (2021). Corundum: Statically-enforced persistent memory safety. In International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS (pp. 429–442). Association for Computing Machinery. https://doi.org/10.1145/3445814.3446710

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