Abstract
Concurrent data structures that have fast and predictable performance are of critical importance for harnessing the power of multicore processors, which are now ubiquitous. Although wait-free objects, whose operations complete in a bounded number of steps, were devised more than two decades ago, wait-free objects that can deliver scalable high performance are still rare.
In this paper, we present the first wait-free FIFO queue based on fetch-and-add (FAA). While compare-and-swap (CAS) based non-blocking algorithms may perform poorly due to work wasted by CAS failures, algorithms that coordinate using FAA, which is guaranteed to succeed, can in principle perform better under high contention. Along with FAA, our queue uses a custom epoch-based scheme to reclaim memory; on x86 architectures, it requires no extra memory fences on our algorithm's typical execution path. An empirical study of our new FAA-based wait-free FIFO queue under high contention on four different architectures with many hardware threads shows that it outperforms prior queue designs that lack a wait-free progress guarantee. Surprisingly, at the highest level of contention, the throughput of our queue is often as high as that of a microbenchmark that only performs FAA. As a result, our fast wait-free queue implementation is useful in practice on most multi-core systems today. We believe that our design can serve as an example of how to construct other fast wait-free objects.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference21 articles.
1. Performance issues in non-blocking synchronization on shared-memory multiprocessors
2. Lecture Notes in Computer Science;Anderson J.,1995
3. Reclaiming Memory for Lock-Free Data Structures
4. A universal construction for wait-free transaction friendly data structures
5. E. W. Dijkstra. Solution of a problem in concurrent programming control. Commun. ACM 8(9):569-- Sept. 1965. doi: 10.1145/365559. 365617. 10.1145/365559.365617 E. W. Dijkstra. Solution of a problem in concurrent programming control. Commun. ACM 8(9):569-- Sept. 1965. doi: 10.1145/365559. 365617. 10.1145/365559.365617
Cited by
14 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Wait-free Trees with Asymptotically-Efficient Range Queries;2024 IEEE International Parallel and Distributed Processing Symposium (IPDPS);2024-05-27
2. Memory Bounds for Concurrent Bounded Queues;Proceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming;2024-02-20
3. Diciclo: Flexible User-level Services for Efficient Multitenant Isolation;ACM Transactions on Computer Systems;2023-12-30
4. CQS: A Formally-Verified Framework for Fair and Abortable Synchronization;Proceedings of the ACM on Programming Languages;2023-06-06
5. The State-of-the-Art LCRQ Concurrent Queue Algorithm Does NOT Require CAS2;Proceedings of the 28th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming;2023-02-21