Litcius/Paper detail

Jaaru: efficiently model checking persistent memory programs

Hamed Gorjiara, Guoqing Xu, Brian Demsky

202133 citationsDOIOpen Access PDF

Abstract

Persistent memory (PM) technologies combine near DRAM performance with persistency and open the possibility of using one copy of a data structure as both a working copy and a persistent store of the data. Ensuring that these persistent data structures are crash consistent (i.e., power failures) is a major challenge. Stores to persistent memory are not immediately made persistent --- they initially reside in processor cache and are only written to PM when a flush occurs due to space constraints or explicit flush instructions. It is more challenging to test crash consistency for PM than for disks given the PM's byte-addressability that leads to significantly more states. We present Jaaru, a fully-automated and ultra-efficient model checker for PM programs. Key to Jaaru's efficiency is a new technique based on constraint refinement that can reduce the number of executions that must be explored by many orders of magnitude. This exploration technique effectively leverages commit stores, a common coding pattern, to reduce the model checking complexity from exponential in the length of program executions to quadratic. We have evaluated Jaaru with PMDK and RECIPE, and found 25 persistency bugs, 18 of which are new. Jaaru is also orders of magnitude more efficient than Yat, a model checker that eagerly explores all possible states.

Topics & Concepts

Computer scienceModel checkingParallel computingCrashCacheConsistency modelByteData structureKey (lock)DramMemory addressProgramming languageOperating systemCorrectnessSemiconductor memoryComputer hardwareParallel Computing and Optimization TechniquesAdvanced Memory and Neural ComputingAdvanced Data Storage Technologies
Jaaru: efficiently model checking persistent memory programs | Litcius