RFR: Adjust heuristics for running with update-refs phase

Roman Kennke rkennke at redhat.com
Tue May 2 17:31:44 UTC 2017


When running with -XX:+ShenandoahUpdateRefsEarly, heuristics need to
work differently because we're reclaiming the cset before marking, not
after. With current settings, we're not using ~40% of the heap when
running with update-refs. Updating refs in a separate cycle also breaks
the funny ping-ponging of GC cycles we have seen early. We can thus skip
over the extra handling for the expected cset-reclaimed-space, which
also makes us use all of the heap.

http://cr.openjdk.java.net/~rkennke/update-refs-heuristics/webrev.00/
<http://cr.openjdk.java.net/%7Erkennke/update-refs-heuristics/webrev.00/>

Notice that this means we now tend to run into full-gc during update
refs phase. We need to solve this by implementing degeneration of
update-refs just like we did with marking, i.e. if we run OOM during
update-refs, stop the world and finish updating refs under the pause,
instead of going into full-gc. This is not part of this patch though.

We also need different thresholds when running with update-refs. Doesn't
make much sense to fiddle with this before we have degenerated update-refs.

Ok to push?

Roman





More information about the shenandoah-dev mailing list