Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-7432

Add new CMS GC flags to cassandra_env.sh for JVM later than 1.7.0_60

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Normal
    • Resolution: Fixed
    • 2.0.10, 2.1.1
    • Packaging
    • None

    Description

      The new flags in question are as follows:

      -XX:+CMSParallelInitialMarkEnabled
      -XX:+CMSEdenChunksRecordAlways
      

      Given we already have

      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
      

      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: (see
      http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8021809)

      Attachments

        1. 7432.txt
          0.7 kB
          Brandon Williams

        Issue Links

          Activity

            People

              brandon.williams Brandon Williams
              graham sanderson graham sanderson
              Brandon Williams
              Jonathan Ellis
              Votes:
              1 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: