Skip to main content
eScholarship
Open Access Publications from the University of California

UC San Diego

UC San Diego Electronic Theses and Dissertations bannerUC San Diego

Fast, Durable, and Safe Data Management Support for Persistent Memory

Abstract

Emerging fast, byte-addressable Persistent Memory (PM) considerably increases the storage performance compared to traditional disks and makes it possible to build complex data structures that can survive system failures. However, 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 area can corrupt data, leak resources, or prevent successful recovery after a crash. Additionally, its high price limits its capacity to scale as same as traditional block devices.

This dissertation first presents Corundum, a Rust-based library with an idiomatic PM programming interface that leverages Rust’s type system to avoid the most common PM programming bugs statically. 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.

Then, the dissertation presents Carbide, a robust multilingual programming framework that allows developing safe data structures in Corundum and using them in C++. Carbide strictly checks the data structure implementation for PM safety and allows unrestrictedly using them in C++ with an accurate persistent type checking process. Our experimental results show that Carbide not only does not incur a significant slowdown, but it is also faster than purely using Corundum in some of our benchmarks due to the flexibility that it provides.

Finally, it introduces Ziggurat, a tiered file system that combines PM and slow disks to create a high-performance and extensive storage system. Ziggurat steers incoming writes to PM, DRAM, or disk depending on application access patterns, write size, and the likelihood that the application will stall until the write completes. Our experimental results show that with a small amount of PM and a large SSD, Ziggurat achieves up to 38.9X and 46.5X throughput improvement compared with EXT4 and XFS running on an SSD alone, respectively.

Main Content
For improved accessibility of PDF content, download the file to your device.
Current View