Title
Balanced double queues for GC work-stealing on weak memory models.
Abstract
Work-stealing is promising for scheduling and balancing parallel workloads. It has a wide range of applicability on middleware, libraries, and runtime systems of programming languages. OpenJDK uses work-stealing for copying garbage collection (GC) to balance copying tasks among GC threads. Each thread has its own queue to store tasks. When a thread has no task in its queue, it acts as a thief and attempts to steal a task from another thread's queue. However, this work-stealing algorithm requires expensive memory fences for pushing, popping, and stealing tasks, especially on weak memory models such as POWER and ARM. To address this problem, we propose a work-stealing algorithm that uses double queues. Each GC thread has a public queue that is accessible from other GC threads and a private queue that is only accessible by itself. Pushing and popping tasks in the private queue are free from expensive memory fences. The most significant point in our algorithm is providing a mechanism to maintain the load balance on the basis of the use of double queues. We developed a prototype implementation for parallel GC in OpenJDK8 for ppc64le. We evaluated our algorithm by using SPECjbb2015, SPECjvm2008, TPC-DS, and Apache DayTrader.
Year
DOI
Venue
2018
10.1145/3210563.3210570
ISMM
Keywords
Field
DocType
OpenJDK, Work-stealing, copying GC, weak memory model
Copying garbage collection,Middleware,Load balancing (computing),Computer science,Scheduling (computing),Parallel computing,Queue,Copying,Thread (computing),Work stealing
Conference
Volume
Issue
ISSN
53
5
0362-1340
ISBN
Citations 
PageRank 
978-1-4503-5801-9
0
0.34
References 
Authors
9
4
Name
Order
Citations
PageRank
Michihiro Horie1204.18
Hiroshi Horii215315.77
Kazunori Ogata3443.69
Tamiya Onodera418017.13