Title | ||
---|---|---|
SALSA: scalable and low synchronization NUMA-aware algorithm for producer-consumer pools |
Abstract | ||
---|---|---|
We present a highly-scalable non-blocking producer-consumer task pool, designed with a special emphasis on lightweight synchronization and data locality. The core building block of our pool is SALSA, Scalable And Low Synchronization Algorithm for a single-consumer container with task stealing support. Each consumer operates on its own SALSA container, stealing tasks from other containers if necessary. We implement an elegant self-tuning policy for task insertion, which does not push tasks to overloaded SALSA containers, thus decreasing the likelihood of stealing. SALSA manages large chunks of tasks, which improves locality and facilitates stealing. SALSA uses a novel approach for coordination among consumers, without strong atomic operations or memory barriers in the fast path. It invokes only two CAS operations during a chunk steal. Our evaluation demonstrates that a pool built using SALSA containers scales linearly with the number of threads and significantly outperforms other FIFO and non-FIFO alternatives. |
Year | DOI | Venue |
---|---|---|
2012 | 10.1145/2312005.2312035 | SPAA |
Keywords | Field | DocType |
cas operation,task insertion,overloaded salsa container,data locality,core building block,low synchronization numa-aware algorithm,single-consumer container,producer-consumer task pool,low synchronization algorithm,producer-consumer pool,salsa containers scales linearly,own salsa container,multi core,concurrent data structures | Synchronization,Locality,FIFO (computing and electronics),Computer science,Parallel computing,Concurrent data structure,Multi-core processor,SALSA,Fast path,Distributed computing,Scalability | Conference |
Citations | PageRank | References |
4 | 0.39 | 21 |
Authors | ||
4 |
Name | Order | Citations | PageRank |
---|---|---|---|
Elad Gidron | 1 | 4 | 0.39 |
Idit Keidar | 2 | 1892 | 155.01 |
Dmitri Perelman | 3 | 120 | 7.40 |
Yonathan Perez | 4 | 4 | 0.39 |