graham sanderson created CASSANDRA-7432:
-------------------------------------------

             Summary: Add new CMS GC flags to cassandra_env.sh for JVM later 
than 1.7.0_60
                 Key: CASSANDRA-7432
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7432
             Project: Cassandra
          Issue Type: Improvement
          Components: Packaging
            Reporter: graham sanderson


The new flags in question are as follows:

{code}
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordAlways
{code}

Given we already have

{code}
JVM_OPTS="$JVM_OPTS -XX:+UseParNewGC" 
JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC" 
JVM_OPTS="$JVM_OPTS -XX:+CMSParallelRemarkEnabled" 
JVM_OPTS="$JVM_OPTS -XX:+UseTLAB"
if [ "$JVM_ARCH" = "64-Bit" ] ; then
    JVM_OPTS="$JVM_OPTS -XX:+UseCondCardMark"
fi
{code}

The assumption would be that people are at least running on large number CPU 
cores/threads

I would therefore recommend defaulting these flags if available - the only two 
possible downsides for {{+CMSEdenChunksRecordAlways}}:

1) There is a new very short (probably un-contended) lock in the "slow" (non 
TLAB) eden allocation path with {{+CMSEdenChunksRecordAlways}}. I haven't 
detected this timing wise - this is the "slow" path after all
2) If you are running with {{-XX:-UseCMSCompactAtFullCollection}} (not the 
default) *and* you call {{System.gc()}} then  {{+CMSEdenChunksRecordAlways}} 
will expose you to a possible seg fault 
[http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8021809]



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to