Since the Compressor algorithm was published only this year, perhaps it
makes sense to consider it experimental.  Perhaps make it a compile time
switch so that that folks focused on production quality VM don't trip on
it.  Even assuming the implementation of the Compressor algorithm is bug
free, there may be unforeseen performance problems that surface with
different workloads.

On 10/29/06, Xiao-Feng Li <[EMAIL PROTECTED]> wrote:

On 10/29/06, Rana Dasgupta <[EMAIL PROTECTED]> wrote:
> Xiao Feng,
>   I will read the reference to understand what are the compressor
> advantages, and how the algorithm is implemented, thanks.
>
> Even when you have 1GB of physical memory, is there not an overhead of
page
> faults?

Yes, I agree that page faults definitely will be an overhead. I guess
the page mapping overhead in Compressor is lower than the benefits it
achieves. But yes, we need evaluate it independently.

> Is it an option to compact the heap in parts and/or to increase the
number
> of passes to reduce the space overhead?

The key idea of Compressor is to keep the object order during parallel
compaction. There are other algorithms like "mark-copy" which require
less additional copy space, but can't maintain the object order. In
order to enable the parallel compaction of multiple blocks, the
assumption is, we have to assume the to-space in the worst case is the
equal size as the from-space. We can use a to-space with 30% size of
the from-space in most compaction collections without problem, but we
need be prepared for the worst case. A possible solution is, to have a
fall-back algorithm when the to-space is smaller than required. This
is not a new idea, e.g., GCv4.1 employs something similar and there
are some papers available. [1] in ISMM06 is an example.

[1] http://www.cs.purdue.edu/homes/pmcgache/ismm06.pdf

> Is this significantly better than doing semi-space copying at each GC
cycle,
> since one major advantage of compaction( other than preserving
allocation
> order ) over copying, was probably less space overhead?

Yes. The major advantage in my opinion is less physical space
overhead. Well it introduces the vitual space overhead. If assuming
the same of physical space overhead as a semi-space collector, we need
evaluate the real benefits of object locality to trade off the
collection pause time.

> Are we looking for a parallel compaction algorithm for all situations,
or
> can we think of choosing at JVM startup based on user input,
client/server,
> or OS feedback on execution environment?

I think some adaptive choice is better. It means we need provide the
choices at first. :-) I guess it's not a big overhead to have two
parallel compactors.

Thanks,
xiaofeng

> Sorry for all these questions before reading the book :-)
>
> Rana
>
>
>
>
>
>
> > On 10/27/06, Xiao-Feng Li <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi, all, the plan for GCv5 parallel compaction is to apply the idea
of
> > > Compressor [1]. But it has an issue I want to discuss with you.
> > > Compressor needs to reserve an unmapped virtual space for
compaction.
> > > The size of the reserved part is the same as that of copy reserve
> > > space in a semi-space collector. This means about that part of the
> > > virtual space is unusable for the JVM. In a typical setting, the
> > > wasted part is half size of the total compaction space. If we have
1GB
> > > physical memory, the JVM is ok for Compressor because the virtual
> > > space is large enough to wast half; but if the phsical memory is
>2GB,
> > > Compressor may have a problem in 32bit machine: some of phsical
mapped
> > > space might be wasted.
> > >
> > > Any opinion on this?
> > >
> > > Thanks,
> > > xiaofeng
> > >
> > > [1] http://www.cs.technion.ac.il/~erez/Papers/compressor-pldi.pdf
> >
> >
>
>




--
Weldon Washburn
Intel Enterprise Solutions Software Division

Reply via email to