Log In Sign Up

Memory-Optimality for Non-Blocking Containers

by   Vitaly Aksenov, et al.

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.


page 1

page 2

page 3

page 4


Durable Queues: The Second Amendment

We consider durable data structures for non-volatile main memory, such a...

Improved Bounds for Two Query Adaptive Bitprobe Schemes Storing Five Elements

In this paper, we study two-bitprobe adaptive schemes storing five eleme...

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

The concurrency literature presents a number of approaches for building ...

Garbage Collection in Concurrent Sets

Garbage Collection in concurrent data structures, especially lock-free o...

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...

Implementation of general formal translators

The general translator formalism and computing specific implementations ...

Parallel Quicksort without Pairwise Element Exchange

Standard implementations of 2-way, parallel, distributed memory Quicksor...