Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In addition there was an intention to compare the current collector with the G1 garbage collector, that is available in Java 7 (also available in Java 6, but should be improved in newer versions of JVMs).

Test Setup

Two machines where used for the testing:

...

The second machine was used to generate load. Since we wanted to have quite a high load we could not use the DVD Store, since monitoring of it does not produce too much data and buffer on the CMR gets full very slow. Instead we used the Invoker application. For each test we started the three Invoker processes, each generating load with 10 threads.

CMS

The inspectIT CMR currently has following JVM settings (adapted for 8GB heap size):

...

We were quite surprised with the results, they seamed to be very good. 

G1

The first task with using the G1 was to find the best configuration. We tested many different ones, starting from complete default to changing parameter by parameter. The default configuration showed worst results and with the improvement brought by our second configuration we were sure that more tuning will bring G1 performance close to the CMS. However, we were not able to do so. The throughput was constantly way under 90%. In addition we noticed that all tuning that we do bring very little change in the results and from that we concluded that is quite hard to change the behavior of G1 collector.

...

Code Block
-Xms8192m -Xmx8192m -XX:MaxPermSize=192m -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=2000 -XX:G1HeapRegionSize=8 -XX:G1ReservePercent=15 -XX:NewRatio=3 -XX:SurvivorRatio=5 -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+UseBiasedLocking -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError -server -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log

 

24h Tests

After fighting to find the best G1 configuration, we decided to take a step forward and test the CMS and the selected "best" G1 configuration in a 24h tests. The setup was the same, except that we decreed to 2 Invoker processes.

...

Very interesting thing is anomaly in the CMS between 5h-5h30m, because as it is visible in the graph the GC pauses in that period took much more time that the usual ones. Still it is not known why.

Conclusion

One of the conclusions is that the current JVM settings for the inspectIT CMR are absolutely OK. The 95% throughput is very high, maybe even highest possible. Thus, we should continue using these settings.

...