RFR(S): 7068240: G1: Long "parallel other time" and "ext root scanning" when running specific benchmark
john.cuthbertson at oracle.com
Wed Jul 20 22:45:00 UTC 2011
Can I have a couple of volunteers look over these changes? The webrev
can be found at: http://cr.openjdk.java.net/~johnc/7068240/webrev.0/
When running a specific benchmark, it was noticed that the "ext root
scanning" time was significantly longer for one thread than the others -
in a good number of the evacuation pauses. Some of these long times were
caused by the stack depth on an application thread but others were
caused by the scanning of the reference processor's discovered lists.
Furthermore the scanning of the discovered lists was taking place after
RSet updating and scanning, negating any stealing that might take place
in these parts, and causing longer termination times. Also the scan
closures were applied directly to the discovered lists rather than a
BufferingOopClosure being applied. As a result, if any copying took
place, the time for that copying was being attributed to ext. root
scanning rather than "object copying".
Additionally I also removed a couple statistic variables from
G1CollectorPolicy that were not thread-local but being updated and
(overwritten) by the parallel worker threads. The only place where these
statistic variables were being used was in an instrumentation block that
was executed when G1PolicyVerbose was set appropriately.
Testing: gc test suite and jprt.
More information about the hotspot-gc-dev