G1 performance

mrk mrk at autocom.dk
Tue Oct 19 07:46:53 UTC 2010

Hi Adam

This is very interesting. We have considered switching to G1 ourselves, as
we are not fully satisfied with CMS. Your findings are very usable.

Best regards,
Morten Knudsen

"Adam Hawthorne" <adamh at basis.com> skrev i 
news:AANLkTin4oZHvkiPT9Z5pzhGYcDqLbx=xUaZ-A5Rc_5ax at mail.gmail.com...
Hi all,

Over the weekend, we created a test to try to reproduce our pause time 
issues I posted about last week so we could be more confident in our 
recommendation to the customer.  While I had the machine provisioned, I ran 
our test with G1 .  I'm afraid the results were quite poor for our 
application.  I have this machine for the next week, and I'll be trying out 
different test configurations, but I'd like to continue to test G1 while I 
have the machine available.  Is there more information about tuning G1?  Our 
test box is 64-bit Linux, with 6u22 installed.  I tried two different 

-Xms4g -Xmx4g -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:NewSize=600m 
 -XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=3000 -XX:MaxPermSize=128m 
 -server -XX\:+PrintGCDetails -XX\:+PrintGCTimeStamps -Xloggc:gc.log


When that produced many long Full GC's, I tried decreasing the pause 
interval and removed the NewSize setting:

-Xms4g -Xmx4g -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=400 
 -XX:GCPauseIntervalMillis=2000 -XX:MaxPermSize=128m -server -XX\:+PrintGCDetails 
 -XX\:+PrintGCTimeStamps -Xloggc:gc.log


The result was that there were a lot of Full GC's each taking about 7 
seconds.  Young GC's performed well (except one of the first ones).  Do I 
just need to reduce the pause interval, assuming the pause time requirement 
is fixed?

In contrast, CMS was able to keep all pause times below 300ms with the same 
test, with about 25% GC overhead.

I also tried various combinations of:

-XX:+G1YoungGenSize=600m -XX:+G1ParallelRSetUpdatingEnabled -XX:+G1ParallelRSetScanningEnabled

and the JVM would not start with any of these options.  Did the names change 
in a recent release?  If so, can someone send the new options?  It would 
also be helpful if the following document could be updated:


If anyone is interested, I can run more tests with more logging, and I can 
run the test again with other Java versions.


Adam Hawthorne
Software Engineer
BASIS International Ltd.
+1.505.345.5232 Phone

hotspot-gc-use mailing list
hotspot-gc-use at openjdk.java.net

More information about the hotspot-gc-dev mailing list