Scalable Garbage Collection on Highly Parallel Platforms

Katherine Barabash, M.Sc. Thesis Seminar
Wednesday, 3.2.2010, 14:00
Taub 601
Assoc. Prof. E. Petrank

Computing landscape is changing rapidly in the recent years. On the one hand, the pervasiveness of multiprocessor and multicore hardware requires the software to be able to take advantage of the increasingly available parallelism. On the other hand, the growing complexity of the modern software application domains makes runtime language environments more popular as a major software development tool. In this work, we investigate a question whether a garbage collector, being an important part of the modern runtime language environment, is able to deal with the potential higher parallelism of tomorrow's hardware platforms. We argue that the structure of the application object graph in a garbage collected heap can influence the ability of a collector to scale. In particular, certain, sequential in nature, patterns in the object graph structure can prevent the tracing garbage collector from scaling the important collection phase -- tracing through the live objects graph. First, we examine the object graphs created by the standard Java benchmarks and describe the idealized trace utilization measure we use to evaluate applications in terms of their ability to sustain parallel tracing. Next, we present two solutions for alleviating the scalability problems caused by the problematic object graph properties. The first solution lets the system add pointers to the the headers of objects, which artificially modify the object-graph shape and make it more scalable. The second solution is to let additional garbage collection threads run on idle processors. We present and analyze the results obtained by evaluating our prototypes for both solutions.

Back to the index of events