Building Reliable Software for Persistent Memory

Building Reliable Software for Persistent Memory
Author :
Publisher :
Total Pages : 119
Release :
ISBN-10 : OCLC:1135503475
ISBN-13 :
Rating : 4/5 (75 Downloads)

Book Synopsis Building Reliable Software for Persistent Memory by : Lu Zhang

Download or read book Building Reliable Software for Persistent Memory written by Lu Zhang and published by . This book was released on 2019 with total page 119 pages. Available in PDF, EPUB and Kindle. Book excerpt: Persistent memory (PMEM) technologies preserve data across power cycles and provide performance comparable to DRAM. In emerging computer systems, PMEM will operate on the main memory bus, becoming byte-addressable and cache-coherent. One key feature enabled by persistent memory is to allow software directly accessing durable data using the CPU's load/store instructions, even from the user-space. However, building reliable software for persistent memory faces new challenges from two aspects: crash consistency and fault tolerance. Maintaining crash consistency requires the ability to recover data integrity in the event of system crashes. Using load/store instructions to access durable data introduces a new programming paradigm, that is prone to new types of programming errors. Fault tolerance involves detecting and recovering from persistent memory errors, including memory media errors and scribbles from software bugs. With direct access, file systems and user-space applications have to explicitly manage these errors, instead of relying on convenient functions from lower I/O stacks. We identify unique challenges in improving reliability for PMEM-based software and propose solutions. The thesis first introduces NOVA-Fortis, a fault-tolerant PMEM file system incorporating replication, checksums, and parity for protecting the file system's metadata and the user's file data. NOVA-Fortis is both fast and resilient in the face of corruption due to media errors and software bugs. NOVA-Fortis only protects file data via the read() and write() system calls. When an application memory-maps a PMEM file, NOVA-Fortis has to disable file data protection because mmap() leaves the file system unaware of updates made to the file. For protecting memory-mapped PMEM data, we present Pangolin, a fault-tolerant persistent object library to protect an application's objects from persistent memory errors. Writing programs to ensure crash consistency in PMEM remains challenging. Recovery bugs arise as a new type of programming error, preventing a post-crash PMEM file from recovering to a consistent state. Thus, we design two debugging tools for persistent memory programming: PmemConjurer and PmemSanitizer. PmemConjurer is a static analyzer using symbolic execution to find recovery bugs without running a compiled program. PmemSanitizer contains compiler instrumentation and run-time recovery bug analysis, compensating PmemConjurer with multi-threading support and store reordering tests.


Building Reliable Software for Persistent Memory Related Books