Aggregating Funnels for Faster Fetch&Add and Queues
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.
Authors
- Eric Ruppert
- Siddhartha Jayanti
- Panagiota Fatourou (ORCID: https://orcid.org/0000-0002-6265-6895)
- Julian Shun (ORCID: https://orcid.org/0000-0001-6163-6625)
- Yuanhao Wei (ORCID: https://orcid.org/0000-0002-5176-0961)
- Younghun Roh
Institutions
- Google (United States) (US)
- University of Crete (GR)
- York University (CA)
Publication Details
- Published
- 2025-02-28
- DOI
- https://doi.org/10.1145/3710848.3710873
- Citations
- 1
- Primary Topic
- Distributed systems and fault tolerance
- Type
- article
- Field-Weighted Citation Impact
- 1.49