Sciweavers

SPAA
2012
ACM

SALSA: scalable and low synchronization NUMA-aware algorithm for producer-consumer pools

12 years 2 months ago
SALSA: scalable and low synchronization NUMA-aware algorithm for producer-consumer pools
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...
Elad Gidron, Idit Keidar, Dmitri Perelman, Yonatha
Added 29 Sep 2012
Updated 29 Sep 2012
Type Journal
Year 2012
Where SPAA
Authors Elad Gidron, Idit Keidar, Dmitri Perelman, Yonathan Perez
Comments (0)