Concurrent Data Structures Made Easy
Callista Le, Kiran Gopinathan, Koon Wen Lee, Seth Gilbert, Ilya Sergey
摘要
Design of an efficient thread-safe concurrent data structure is a balancing act between its implementation complexity and performance. Lock-based concurrent data structures, which are relatively easy to derive from their sequential counterparts and to prove thread-safe, suffer from poor throughput under even light multi-threaded workload. At the same time, lock-free concurrent structures allow for high throughput, but are notoriously difficult to get right and require careful reasoning to formally establish their correctness.
In this work, we explore a solution to this conundrum based on a relatively old idea of batch parallelism-an approach for designing high-throughput concurrent data structures via a simple insight: efficiently processing a batch of a priori known operations in parallel is easier than optimising performance for a stream of arbitrary asynchronous requests. Alas, batch-parallel structures have not seen wide practical adoption due to (𝑖) the inconvenience of having to structure multi-threaded programs to explicitly group operations and (𝑖𝑖) the lack of a systematic methodology to implement batch-parallel structures as simply as lock-based ones.
We present OBatcher-a Multicore OCaml library that streamlines the design, implementation, and usage of batch-parallel structures. It solves the first challenge (how to use) by suggesting a new lightweight implicit batching design that is built on top of generic asynchronous programming mechanisms. The second challenge (how to implement) is addressed by identifying a family of strategies for converting common sequential structures into efficient batch-parallel ones, and by providing functors that embody those strategies. We showcase OBatcher with a diverse set of benchmarks. Our evaluation of all the implementations on large asynchronous workloads shows that (a) they consistently outperform the corresponding coarse-grained lock-based implementations and that (b) their throughput scales reasonably with the number of processors.
CCS Concepts: • Computing methodologies → Concurrent algorithms.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了最后一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
它引用的顶会 Paper9
- Retrofitting effect handlers onto OCamlK. C. Sivaramakrishnan, Stephen Dolan, Leo White, Tom Kelly 等PLDI 2021 · 被引用 56 次
- Non-blocking interpolation search trees with doubly-logarithmic running timeTrevor Brown, Aleksandar Prokopec, Dan AlistarhPPoPP 2020 · 被引用 29 次
- Parallel Batch-Dynamic Graphs: Algorithms and Lower BoundsLaxman Dhulipala, David Durfee, Janardhan Kulkarni, Richard Peng 等SODA 2020 · 被引用 28 次
- Diaframe: automated verification of fine-grained concurrent programs in IrisIke Mulder, Robbert Krebbers, Herman GeuversPLDI 2022 · 被引用 27 次
- Proving highly-concurrent traversals correctYotam M. Y. Feldman, Artem Khyzha, Constantin Enea, Adam Morrison 等OOPSLA 2020 · 被引用 12 次
相关 Paper
- A wait-free universal construction for large objectsAndreia Correia, Pedro Ramalhete, Pascal FelberPPoPP 2020 · 被引用 12 次
- MxTasks: How to Make Efficient Synchronization and Prefetching EasyJan Mühlig, Jens TeubnerSIGMOD 2021 · 被引用 11 次
- Snoopy: Surpassing the Scalability Bottleneck of Oblivious StorageEmma Dauterman, Vivian Fang, Ioannis Demertzis, Natacha Crooks 等SOSP 2021 · 被引用 26 次
- CQS: A Formally-Verified Framework for Fair and Abortable SynchronizationNikita Koval, Dmitry Khalanskiy, Dan AlistarhPLDI 2023 · 被引用 1 次
- Scalable Address Spaces using Concurrent Interval SkiplistTae Woo Kim, Youngjin Kwon, Jeehoon KangSOSP 2025
