G1 RSet improvement ideas
thomas.schatzl at oracle.com
Mon Feb 3 03:56:20 PST 2014
On Mon, 2014-02-03 at 10:58 +0100, Thomas Schatzl wrote:
> let me have a stab at this long mail with a few half-baked
> thoughts... ;)
> On Thu, 2014-01-30 at 12:33 -0500, Tony Printezis wrote:
> > Hi all,
> > (5) G1 RSets: Don't use the card table during RSet scanning to reduce
> > duplication
> > Currently, while scanning Remembered Sets (RSets) during a GC we use the
> > card table to mark whether a particular card has been scanned or not
> > (since the same card might appear on multiple RSets). This is bad for a
> > couple of reasons (the first one is the important one, the second one we
> > could address reasonably easily):
> > - First, we have to clear the card table at the end of the GC, which
> > requires a non-trivial amount of work.
> Do you have numbers here? It definitely is a valid concern (with large
> heaps), but in the logs I got so far, this has not been a really big issue
> yet because the other phases are so much longer...
> A more coarse second-level card table (512k/1M card size?) remembering
> approximately where these marks are should already go a long way towards
> reducing the overhead?
Okay, I just saw that the card table is only cleared for regions that
contain dirty cards already.
Need to dig into the code and see how it works exactly. :)
The only remaining comment is that e.g. at 32M region size this seems to
be a rather coarse granularity.
More information about the hotspot-gc-dev