Publication | Closed Access
Task-pushing: a Scalable Parallel GC Marking Algorithm without Synchronization Operations
31
Citations
22
References
2007
Year
Unknown Venue
Cluster ComputingEngineeringComputer ArchitectureMultithreading (Computer Architecture)High Performance ComputingHardware SecurityConcurrency (Computer Science)Systems EngineeringParallel Marking AlgorithmParallel ComputingData-level ParallelismConcurrent ProgrammingComputer EngineeringComputer ScienceSynchronization OperationsDistributed ComputingGood ScalabilityProgram AnalysisParallel ProgrammingConcurrent Data StructureGarbage Collection
This paper describes a scalable parallel marking technique for garbage collection that does not employ any synchronization operation. To achieve good scalability, two major design issues have to be resolved in parallel marking algorithm, i.e., the overhead of synchronization operations and load balance. This paper presents task-pushing, a novel parallel marking algorithm where each thread proactively gives up its spare tasks to other threads. Enlightened by the idea of communicating sequential process (CSP), task-pushing arranges the computation into a process network, eliminating synchronization operations in the whole marking process. Load balance is achieved by dripping tasks from thread local mark-stack for other threads to execute. To the best of our knowledge, this is the first parallel marking algorithm that completely avoids the synchronization primitives. We evaluated task-pushing in aspects of queuing efficiency, load balancing strategy, synchronization overhead, and overall scalability. The results on a 16-way Intel Xeon machine showed that task-pushing has better scalability than work-stealing technique with pseudojbb and GCOld server-kind Java benchmarks.
| Year | Citations | |
|---|---|---|
Page 1
Page 1