You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Xiao-Feng Li <xi...@gmail.com> on 2006/11/08 09:31:01 UTC

[DRLVM][GC] (HARMONY-2101) initial work on paralleling compaction collector

Hi, I submited a patch to enable parallel compaction of GCv5. It now
works in Windows. Please don't expect any performance improvement yet
since I care only about the framework at the moment. And it's not a
full parallel compactor because not all phases are parallelized, but
that would be easier. Hopefully the experience gained during the
development can help in more advanced parallel compaction
implementations.

The description of the patch is following:

URL: http://issues.apache.org/jira/browse/HARMONY-2101

This is a patch that makes the GCv5 work in multiple collector
threads. This patch has mainly following work:

1. It makes the marking phase and installing forwarding-pointer phase
parallel. The marking phase lets multiple collectors share a task pool
for load balance. The installing forwarding-pointer phase is an
improvement over SUN's parallel compator. It enables all the objects
be compacted to lower address space without a few piles of compacted
objects. The remaining phase in compaction is to move object. It's not
yet put in the patch, but it's trivial since the difficulty is in
prior phases.

2. Data structures/utilities the support a prallel collection. In this
patch, I put a synchronized stack and a synchronized queue
implementations. Both are non-blocking. The queue is based on Michael
and Scott's algorithm. Some other data structures like vector and pool
are also implemented. The parallel compaction heavily depends on these
data structures and utilities for both correctness and performance.

3. It also has added the code for command line options for number of
collector threads and to switch between generational/non-generational
mode. -Dgc.gen_mode=true/false -Dgc.num_collectors=2

Note, with this patch, the generational mode is broken. The focus is
for parallel. Hopefully next version will have a full parallel
compactor. Once the parallel compaction is done, I will get back the
generational mode since it is relatively much easier then. The default
is non-gen mode and two collector threads.

Thanks,
xiaofeng