RFR (S): 8201527: Bump default value of G1RefProcDrainInterval

Thomas Schatzl thomas.schatzl at oracle.com
Fri Apr 13 09:10:54 UTC 2018


Hi all,

  can I have reviews for this change that bumps the default value of
G1RefProcDrainInterval to 1000?

The G1RefProcDrainInterval flag determines the frequency at which new
marks are actually processed while keeping alive references during
reference processing. 

The current value is 10, i.e. every ten references we try to drain the
mark stack. However, due to how expensive setup and teardown of G1
marking is, this seriously inhibits performance. 

Tests showed that with a significantly higher value, 1000, reference
processing time can halve.

There is a graph attached to the CR showing that somewhere between 500
and 1000 the improvement levels out, so I chose the higher value. Users
may still try out higher values if they want. Also, we might want to
change this back if/when somebody fixes marking, but that seems to be a
much larger effort than changing this default value :)

There is no issue with filling up the mark stack during reference
processing, by default it may contains 128k entries. So no worries
here.

This improvement is in addition to the other improvements to reference
processing posted just recently.

Internal perf runs are on its way, however they typically do not
exercise reference processing, so there should be no issue.

I will do the CSR work as soon as I have reviews for this (trivial)
change.

CR:
https://bugs.openjdk.java.net/browse/JDK-8201527
Webrev:
http://cr.openjdk.java.net/~tschatzl/8201527/webrev/
Testing:
kitchensink reference processing stress test for many hours with
different values; hs-tier1-3

Thanks,
  Thomas


More information about the hotspot-gc-dev mailing list