Fast, flexible, and comprehensive bug detection for persistent memory programs
- 17 April 2021
- conference paper
- conference paper
- Published by Association for Computing Machinery (ACM) in Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems
Abstract
Debugging persistent memory (PM) programs faces a fundamental tradeoff between performance overhead and bug coverage (comprehensiveness). Large performance overhead or limited bug coverage makes debugging infeasible or ineffective for PM programs. We present PMDebugger, a debugger that detects crash consistency bugs in PM programs. Unlike prior work, PMDebugger is fast, flexible and comprehensive. The design of PMDebugger is driven by a characterization that shows how three fundamental operations in PM programs (store, cache writeback and fence) typically occur in PM programs. PMDebugger uses a hierarchical design composed of PM debugging-specific data structures, operations and bug-detection algorithms (rules). We generalize nine rules to detect crash-consistency bugs for various PM persistency models. Compared with a state-of-the-art detector (XFDetector) and an industry-quality detector (Pmemcheck), PMDebugger leads to 49.3x and 3.4x speedup on average. Compared with another state-of-the-art detector (PMTest) optimized for high performance, PMDebugger achieves comparable performance (within a factor of 2), without heavily relying on programmer annotations, and detects 38 more bugs on ten applications. PMDebugger also identifies more bugs than XFDetector and Pmemcheck. PMDebugger detects 19 new bugs in a real application (memcached) and two new bugs from Intel PMDK.Keywords
This publication has 25 references indexed in Scilit:
- NOVA-FortisPublished by Association for Computing Machinery (ACM) ,2017
- StrataPublished by Association for Computing Machinery (ACM) ,2017
- An Analysis of Persistent Memory Use with WHISPERPublished by Association for Computing Machinery (ACM) ,2017
- DudeTMPublished by Association for Computing Machinery (ACM) ,2017
- NVMcachedPublished by Association for Computing Machinery (ACM) ,2016
- Failure-Atomic Persistent Memory Updates via JUSTDO LoggingPublished by Association for Computing Machinery (ACM) ,2016
- ThyNVMPublished by Association for Computing Machinery (ACM) ,2015
- MojimPublished by Association for Computing Machinery (ACM) ,2015
- AtlasPublished by Association for Computing Machinery (ACM) ,2014
- Benchmarking cloud serving systems with YCSBPublished by Association for Computing Machinery (ACM) ,2010