Table of Contents
Fetching ...

Bentō: Optimizing Persistent Memory Programs

Sebastião Amaro, João Gonçalves, Miguel Matos

TL;DR

Bent is developed, an automatic and black-box binary rewriter that can boost the performance of existing PM programs by up to 15% with minimal programmer effort and found that a specific combination can lead to performance improvements while preserving the original crash-consistency semantics.

Abstract

Persistent Memory (PM) is a new storage technology thatbrings high performance, byte addressability, and persistency for a lesser cost than DRAM. Due to cache volatility and store reordering, developers must use explicit instructions (e.g.: flush and fence) to guarantee that the application state remains consistent upon crashes. This is difficult to get right and, in fact, several tools have been created to detect bugs in PM programs. To overcome this difficulty, programmers tend to be overly conservative, for instance, by enforcing unnecessary ordering constraints, which partially forfeits the performance benefits of using PM. In this paper, we study the impact that different combinations of persistency instructions have in several PM programs and found that a specific combination can lead to performance improvements while preserving the original crash-consistency semantics. Based on these results we developed Bentō an automatic and black-box binary rewriter that can boost the performance of existing PM programs by up to 15% with minimal programmer effort.

Bentō: Optimizing Persistent Memory Programs

TL;DR

Bent is developed, an automatic and black-box binary rewriter that can boost the performance of existing PM programs by up to 15% with minimal programmer effort and found that a specific combination can lead to performance improvements while preserving the original crash-consistency semantics.

Abstract

Persistent Memory (PM) is a new storage technology thatbrings high performance, byte addressability, and persistency for a lesser cost than DRAM. Due to cache volatility and store reordering, developers must use explicit instructions (e.g.: flush and fence) to guarantee that the application state remains consistent upon crashes. This is difficult to get right and, in fact, several tools have been created to detect bugs in PM programs. To overcome this difficulty, programmers tend to be overly conservative, for instance, by enforcing unnecessary ordering constraints, which partially forfeits the performance benefits of using PM. In this paper, we study the impact that different combinations of persistency instructions have in several PM programs and found that a specific combination can lead to performance improvements while preserving the original crash-consistency semantics. Based on these results we developed Bentō an automatic and black-box binary rewriter that can boost the performance of existing PM programs by up to 15% with minimal programmer effort.
Paper Structure (10 sections, 2 figures)

This paper contains 10 sections, 2 figures.

Figures (2)

  • Figure 1: Performance impact of different combinations of flush and fence instructions in a Level Hashing workload with 100% inserts.
  • Figure 2: Performance impact of different flush and fence combinations for YCSB workloads A, B and D. The vanilla bars stands for the original unmodified application (which use clflush), manual is our manual modifications (using clwb followed by an sfence) described in §\ref{['sec:flushstudy']}, and Bentō is the automatic rewriting proposed in §\ref{['sec:patching']}.