Memory-Optimality for Non-Blocking Containers

04/30/2021
by   Vitaly Aksenov, et al.
0

A bounded container maintains a collection of elements that can be inserted and extracted as long as the number of stored elements does not exceed the predefined capacity. We consider the concurrent implementations of a bounded container more or less memory-friendly depending on how much memory they use in addition to storing the elements. This way, memory-optimal implementation employs the minimal possible memory overhead and ensures that data and metadata are stored most compactly, reducing cache misses and unnecessary memory reclamation. In this paper, we show that non-blocking implementations of a large class of element-independent bounded containers, including queues, stacks, and pools, must incur linear in the number of concurrent processes memory overhead. In the special cases when the ABA problem is excluded, e.g., by assuming that the hardware supports LL/SC instructions or by storing distinct elements, we show that the lower bound can be circumvented, by presenting lock-free bounded queues with constant memory overhead. For the general case, we present a CAS-based bounded queue implementation that asymptotically matches our lower bound. We believe that these results open a new research avenue devoted to the memory-optimality phenomenon.

READ FULL TEXT
POST COMMENT

Comments

There are no comments yet.

Authors

page 1

page 2

page 3

page 4

05/18/2021

Durable Queues: The Second Amendment

We consider durable data structures for non-volatile main memory, such a...
10/07/2019

Improved Bounds for Two Query Adaptive Bitprobe Schemes Storing Five Elements

In this paper, we study two-bitprobe adaptive schemes storing five eleme...
01/06/2022

wCQ: A Fast Wait-Free Queue with Bounded Memory Usage

The concurrency literature presents a number of approaches for building ...
06/03/2018

Garbage Collection in Concurrent Sets

Garbage Collection in concurrent data structures, especially lock-free o...
05/21/2018

Stamp-it: A more Thread-efficient, Concurrent Memory Reclamation Scheme in the C++ Memory Model

We present Stamp-it, a new, concurrent, lock-less memory reclamation sch...
12/07/2020

Separation and Equivalence results for the Crash-stop and Crash-recovery Shared Memory Models

Linearizability, the traditional correctness condition for concurrent da...
04/20/2018

Parallel Quicksort without Pairwise Element Exchange

Standard implementations of 2-way, parallel, distributed memory Quicksor...
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.