Reactive Diffracting Trees


Shared counters are concurrent objects which provide a fetch-and-increment operation on a distributed system and can be used to implement a variety of data structures, such as barriers, pools, stacks, and priority queues. Diffracting trees are novel data structures that provide ineffective, high throughput and low contention, shared counter construction. Under high loads, their performance has been shown to surpass all known counter implementations. Unfortunately, Diffract-ing trees of differing depths are optimal forlimited load ranges, and a deep tree that performs well under high load performs rather poorly when the load is very low. Toovercome this drawback, reintroduce the Reactive Diffract-irrg Tree, a novel Diffracting tree construction which can grow and shrink as necessary to better handle the changing access patterns and memory layout oftbe machine on which itrrms. Itprovides true seal-ability and locality by dynamically " morphing " itself all the way from a simple queue-lock based counter under low load, through a range of increasingly deeper/shallower Diffracting trees as the load varies. Empirical evidence, collected on a 32-node Alewife cache-coherent multiprocessor and the Proteus distributed shared-memory simulator, shows that the reactive diffracting tree provides throughput within a constant factor of optimal depth Diffracting trees at all load levels. It also proves to be an effective competitor with known random-ized load balancing algorithms in producerlconsumer applications.

DOI: 10.1145/258492.258495

Extracted Key Phrases

Unfortunately, ACM prohibits us from displaying non-influential references for this paper.

To see the full reference list, please visit