RFR: Adaptive collection set selection in adaptive policy
Aleksey Shipilev
shade at redhat.com
Thu Sep 21 11:42:42 UTC 2017
http://cr.openjdk.java.net/~shade/shenandoah/heuristics-adaptive-cset/webrev.01/
This includes both the actual change to adaptive heuristics, and cleanups than make it less painful.
Brief tour of changes:
*) RegionGarbage -> RegionData renames, and using ShenandoahHeapRegion* directly. This helps to
avoid heap region lookups in heuristics;
*) Coarsening the cset selection method into the single call. This helps to avoid virtual call on
every region, which makes it more optimizeable (important in leu of "/ 100" on hot path!). Coarse
method makes advanced heuristics easier to write.
*) Adaptive heuristics fixes two heuristics deficiencies than may select too small or too large
collection set. See the comments in the source for discussion.
These changes make LRUFragger survive on 85 GB LDS on 100 GB heap without Full GCs, which was never
possible before. Example Visualizer drawings with early-ur=on and early-ur=adaptive:
http://cr.openjdk.java.net/~shade/shenandoah/heuristics-adaptive-cset/85-on-100-URon.png
http://cr.openjdk.java.net/~shade/shenandoah/heuristics-adaptive-cset/85-on-100-URadaptive.png
(yes, we add more stuff to collection set, but the heap is overloaded, and we manage to avoid Full
GCs with that)
Testing: hotspot_gc_shenandoah
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list