Title
Reducing contention through priority updates
Abstract
Memory contention can be a serious performance bottleneck in concurrent programs on shared-memory multicore architectures. Having all threads write to a small set of shared locations, for example, can lead to orders of magnitude loss in performance relative to all threads writing to distinct locations, or even relative to a single thread doing all the writes. Shared write access, however, can be very useful in parallel algorithms, concurrent data structures, and protocols for communicating among threads. We study the "priority update" operation as a useful primitive for limiting write contention in parallel and concurrent programs. A priority update takes as arguments a memory location, a new value, and a comparison function p that enforces a partial order over values. The operation atomically compares the new value with the current value in the memory location, and writes the new value only if it has higher priority according to p. On the implementation side, we show that if implemented appropriately, priority updates greatly reduce memory contention over standard writes or other atomic operations when locations have a high degree of sharing. This is shown both experimentally and theoretically. On the application side, we describe several uses of priority updates for implementing parallel algorithms and concurrent data structures, often in a way that is deterministic, guarantees progress, and avoids serial bottlenecks. We present experiments showing that a variety of such algorithms and data structures perform well under high degrees of sharing. Given the results, we believe that the priority update operation serves as a useful parallel primitive and good programming abstraction as (1) the user largely need not worry about the degree of sharing, (2) it can be used to avoid non-determinism since, in the common case when p is a total order, priority updates commute, and (3) it has many applications to programs using shared data.
Year
DOI
Venue
2013
10.1145/2517327.2442554
Special Interest Group on Programming Languages
Keywords
Field
DocType
contention,parallel programming
Priority ceiling protocol,Data structure,Bottleneck,Parallel algorithm,Computer science,Parallel computing,Thread (computing),Priority inheritance,Concurrent data structure,Multi-core processor,Distributed computing
Conference
Volume
Issue
ISSN
48
8
0362-1340
Citations 
PageRank 
References 
8
0.44
17
Authors
4
Name
Order
Citations
PageRank
Julian Shun159332.57
Guy E. Blelloch22927207.30
Jeremy T. Fineman358736.10
Phillip B. Gibbons46863624.14