Automated Insertion of Flushes and Fences for Persistency

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Guo, Yutong, Luo, Weiyu, Demsky, Brian
Format: Preprint
Published: 2025
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866915509746794496
author Guo, Yutong
Luo, Weiyu
Demsky, Brian
author_facet Guo, Yutong
Luo, Weiyu
Demsky, Brian
contents CXL shared memory and persistent memory allow the contents of memory to persist beyond crashes. Stores to persistent or CXL memory are typically not immediately made persistent; developers must manually flush the corresponding cache lines to force the data to be written to the underlying storage. Correctly using flush and fence operations is known to be challenging. While state-of-the-art tools can find missing flush instructions, they often require bug-revealing test cases. No existing tools can ensure the absence of missing flush bugs. In this paper, we present PMRobust, a compiler that automatically inserts flush and fence operations to ensure that code using persistent memory is free from missing flush and fence bugs. PMRobust employs a novel static analysis with optimizations that target newly allocated objects. We have evaluated PMRobust on persistent memory libraries and several persistent memory data structures and measured a geometric mean overhead of 0.26% relative to the original benchmarks with hand-placed flush and fence operations.
format Preprint
id arxiv_https___arxiv_org_abs_2509_19459
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Automated Insertion of Flushes and Fences for Persistency
Guo, Yutong
Luo, Weiyu
Demsky, Brian
Software Engineering
Programming Languages
CXL shared memory and persistent memory allow the contents of memory to persist beyond crashes. Stores to persistent or CXL memory are typically not immediately made persistent; developers must manually flush the corresponding cache lines to force the data to be written to the underlying storage. Correctly using flush and fence operations is known to be challenging. While state-of-the-art tools can find missing flush instructions, they often require bug-revealing test cases. No existing tools can ensure the absence of missing flush bugs. In this paper, we present PMRobust, a compiler that automatically inserts flush and fence operations to ensure that code using persistent memory is free from missing flush and fence bugs. PMRobust employs a novel static analysis with optimizations that target newly allocated objects. We have evaluated PMRobust on persistent memory libraries and several persistent memory data structures and measured a geometric mean overhead of 0.26% relative to the original benchmarks with hand-placed flush and fence operations.
title Automated Insertion of Flushes and Fences for Persistency
topic Software Engineering
Programming Languages
url https://arxiv.org/abs/2509.19459