קטרינה ברבש, הרצאה סמינריונית למגיסטר
יום רביעי, 3.2.2010, 14:00
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.