RFR (M): 8027295: Free CSet takes ~50% of young pause time

Thomas Schatzl thomas.schatzl at oracle.com
Thu Feb 20 12:15:35 UTC 2014


Hi Mikael,

On Thu, 2014-02-20 at 13:12 +0100, Mikael Gerdin wrote:
> On Thursday 13 February 2014 18.54.13 Thomas Schatzl wrote:
> > Hi all,
> > 
> >   can I have reviews for the following change that improves the (serial)
> > performance of freeing the collection set? On applications that have a
> > high amount of collection set regions, freeing the CSet takes up a large
> > part of the entire collection pause (e.g. 50% on 2GB heaps) and/or takes
> > really long in absolute terms (500ms on 460GB heaps).
> > 
> > This change tries to introduce several small changes across CSet freeing
> > that improve the total serial performance by around ~33%.
> > 
> > It consists of the following changes (please also have a look at the CR
> > for some figures):
> > 
> > - manage code cache roots as set of chunks of nmethods
> >   - improves performance for code cache roots reclamation
> >   - also improves removing/adding elements slightly (no need to
> > reallocate and copy around the entire GrowableArray)
> >   - this change is also a prerequisite for better load balancing code
> > cache root scanning
> >   - some chunk cache to avoid malloc()/free() calls that were the
> > performance issue using the FreeList class. (It unfortunately adds some
> > interface clutter but I _really_ did not want to add the 100th
> > implementation of a linked list in the GC code. It seems good enough).
> 
> Would it be possible to break out the nmethod chunk change as a separate 
> webrev?
> Since that change includes a bit of new code it would be easier to review it 
> and the interface changes needed for that bit separately.
> 
> I'm fine with combining the rest of the misc changes in one webrev.

Already in preparation.

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list