RFR(S): 7068240: G1: Long "parallel other time" and "ext root scanning" when running specific benchmark

John Cuthbertson john.cuthbertson at oracle.com
Wed Jul 20 22:45:00 UTC 2011

Hi Everyone,

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 mailing list