Aggregating Funnels for Faster Fetch&Add and Queues
Open Access
- 28 February 2025
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 99-114
Abstract
Many concurrent algorithms require processes to perform fetch-and-add operations on a single memory location, which can be a hot spot of contention. We present a novel algorithm called Aggregating Funnels that reduces this contention by spreading the fetch-and-add operations across multiple memory locations. It aggregates fetch-and-add operations into batches so that the batch can be performed by a single hardware fetch-and-add instruction on one location and all operations in the batch can efficiently compute their results by performing a fetch-and-add instruction on a different location. We show experimentally that this approach achieves higher throughput than previous combining techniques, such as Combining Funnels, and is substantially more scalable than applying hardware fetch-and-add instructions on a single memory location. We show that replacing the fetch-and-add instructions in the fastest state-of-the-art concurrent queue by our Aggregating Funnels eliminates a bottleneck and greatly improves the queue's overall throughput.Keywords
All Related Versions
Funding Information
- Google Research Scholar Award
- MIT UROP Funding - Ralph L. Evans (1948) Endowment Fund
- Greek Ministry of Education Religious Affairs and Sports under the call SUB 1.1 -- Research Excellence Partnerships (HARSH \Ypsilon\Pi 3TA-0560901)
- Natural Sciences and Engineering Research Council of Canada
- National Science Foundation Grants (CCF-1845763, CCF-2316235, CCF-2403237)
- Google Faculty Research Award
- Hellenic Foundation for Research and Innovation (HFRI) under the ``Second Call for HFRI Research Projects to support Faculty Members and Researchers' (PERSIST3684)
This publication has 47 references indexed in Scilit:
- Highly-Efficient Persistent FIFO Queues2024
- Highly-Efficient Wait-Free SynchronizationTheory of Computing Systems, 2013
- An Optimal Implementation of Fetch-and-IncrementLecture Notes in Computer Science, 2013
- Transactional Locking II2006
- Read-modify-write networksDistributed Computing, 2004
- Combining Funnels: A Dynamic Approach to Software CombiningJournal of Parallel and Distributed Computing, 2000
- Elimination Trees and the Construction of Pools and StacksTheory of Computing Systems, 1997
- Linearizable counting networksDistributed Computing, 1996
- Wait-free algorithms for fast, long-lived renamingScience of Computer Programming, 1995
- Algorithms for parallel memory allocationInternational Journal of Parallel Programming, 1988