一句话:提出 PMDebugger,一个快速、灵活且全面检测持久内存程序崩溃一致性错误的调试器。
持久内存(PM)程序调试面临性能开销与错误覆盖之间的根本权衡:开销过大或覆盖有限都使调试不可行。本文提出 PMDebugger,一个检测 PM 程序崩溃一致性 bug 的调试器。其设计基于对 store、cache writeback 和 fence 三类基本操作的特征刻画,采用分层结构,包含 PM 调试专用数据结构、操作与检测算法,并泛化九条规则以覆盖多种持久性模型。评估显示,相比 XFDetector 和 Pmemcheck 平均加速 49.3 倍和 3.4 倍;与 PMTest 性能相当(2 倍以内),且不重度依赖注解,在十个应用上多检测 38 个 bug;还在 memcached 发现 19 个新 bug,在 Intel PMDK 发现 2 个新 bug。
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.
DOI 原文 ·
@inproceedings{paperbot6133,
title = {Fast, flexible, and comprehensive bug detection for persistent memory programs},
author = {Bang Di and Jiawen Liu and Hao Chen and Dong Li},
booktitle = {ASPLOS},
year = {2021},
doi = {10.1145/3445814.3446744}
}