G1 with Solr - thread from dev at lucene.apache.org

Thomas Schatzl thomas.schatzl at oracle.com
Tue Dec 23 17:55:47 UTC 2014


Hi,

On Tue, 2014-12-23 at 10:46 -0700, Shawn Heisey wrote:
> On 12/21/2014 7:01 AM, Thomas Schatzl wrote:
> >
> > Add
> >
> > -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintReferenceGC -XX:
> > +PrintAdaptiveSizePolicy
> 
> I have GC logging options in a separate environment variable.
> 
> GCLOG_OPTS="-verbose:gc -Xloggc:logs/gc.log -XX:+PrintGCDateStamps 
> -XX:+PrintGCDetails -XX:+PrintAdaptiveSizePolicy -XX:+PrintReferenceGC"

ParallelRefProcEnabled is missing.

use

GCLOG_OPTS="-verbose:gc -Xloggc:logs/gc.log -XX:+PrintGCDateStamps 
-XX:+PrintGCDetails -XX:+PrintAdaptiveSizePolicy -XX:+PrintReferenceGC
-XX:+UnlockExperimentalVMOptions -XX:G1LogLevel=finest"

The last two are additional verboseness options.

> 
> Here's the new G1 options list based on your feedback:
> 
> JVM_OPTS=" \
> -XX:+UseG1GC \
> -XX:NewRatio=3 \

Remove NewRatio. This will severely limit adaptiveness.

> -XX:+ParallelRefProcEnabled
> -XX:maxGCPauseMillis=200

Use "MaxGCPauseMillis" with capital M.

> -XX:+UseLargePages \
> -XX:+AggressiveOpts \
> "

I.e.

JVM_OPTS=" \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UseLargePages \
  -XX:+AggressiveOpts

Actually it might be as good to simply use:

JVM_OPTS=" \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled"

Because 200 is the default value for MaxGCPauseMillis, and the others
either are not used anyway (no large pages in your system) or won't have
any noticeable impact (AggressiveOpts has last been tuned to current
systems ages ago; the only useful part of that is "-server" to enable
the server compiler, but on 64 bit VMs the server compiler is default
too). Always good to start from a clean slate.

Depending on the results from the log we can improve the settings. 

Thanks,
  Thomas




More information about the hotspot-gc-use mailing list