. Below are the GC parameter extracted from cassandra 1.0.8 environment file cassandra-env.sh . So let's study them one by one what is the parameter means and what can be change.
# GC tuning options
JVM_OPTS="$JVM_OPTS -XX:+UseParNewGC"
JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC"
JVM_OPTS="$JVM_OPTS -XX:+CMSParallelRemarkEnabled"
JVM_OPTS="$JVM_OPTS -XX:SurvivorRatio=8"
JVM_OPTS="$JVM_OPTS -XX:MaxTenuringThreshold=1"
JVM_OPTS="$JVM_OPTS -XX:CMSInitiatingOccupancyFraction=75"
JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
# GC logging options -- uncomment to enable
# JVM_OPTS="$JVM_OPTS -XX:+PrintGCDetails"
# JVM_OPTS="$JVM_OPTS -XX:+PrintGCDateStamps"
# JVM_OPTS="$JVM_OPTS -XX:+PrintHeapAtGC"
# JVM_OPTS="$JVM_OPTS -XX:+PrintTenuringDistribution"
# JVM_OPTS="$JVM_OPTS -XX:+PrintGCApplicationStoppedTime"
# JVM_OPTS="$JVM_OPTS -XX:+PrintPromotionFailure"
# JVM_OPTS="$JVM_OPTS -XX:PrintFLSStatistics=1"
# JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc-`date +%s`.log"
-XX:+UseParNewGC
Use parallel algorithm for young space collection.
-XX:+UseConcMarkSweepGC
Use Concurrent Mark-Sweep GC in the old generation
-XX:SurvivorRatio=8
Ratio of eden/survivor space size. The default value is 8
-XX:MaxTenuringThreshold=1
Max value for tenuring threshold.
-XX:CMSInitiatingOccupancyFraction=75
Percentage CMS generation occupancy to start a CMS collection cycle (A negative value means that CMSTirggerRatio is used).
-XX:+UseCMSInitiatingOccupancyOnly
Only use occupancy as a criterion for starting a CMS collection.
-XX:+PrintGCDetails
Print more elaborated GC info
-XX:+PrintGCDateStamps
Print date stamps at garbage collection events (e.g. 2011-09-08T14:20:29.557+0400: [GC... )
-XX:+PrintHeapAtGCPrint
heap layout before and after each GC
-XX:+PrintTenuringDistribution
Print detailed demography of young space after each collection
-XX:+PrintGCApplicationStoppedTime
Print the time the application has been stopped
-XX:+PrintPromotionFailure
Print additional diagnostic information following promotion failure
-XX:PrintFLSStatistics=1
Print additional info concerning free lists
-Xloggc:<file>
Redirects GC output to file instead of console
The first part of GC tuning is geared toward which GC strategy to use in cassandra. The second GC tuning is more toward fine tune GC logging example timestamp, heap layaout, etc. If you want to get even more challenging, I end this article by providing a few good links for your further references.
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html
http://library.blackboard.com/ref/df5b20ed-ce8d-4428-a595-a0091b23dda3/Content/_admin_server_optimize/optimize_non_standard_jvm_arguments.htm
Last but not least, if you are happy reading this and learn something, please remember to donate too.