Filippo Giunchedi has submitted this change and it was merged.

Change subject: Move Cassandra to g1gc collector and increase heap size
......................................................................


Move Cassandra to g1gc collector and increase heap size

The g1gc collector handles larger heaps better out of the box, and will be the
new default in Cassandra 3.0. We have tested it for a couple of hours in
production with the settings below, and it seems to have improved latencies
and reduced timeouts. It lets us increase the heap size slightly from 8g to
12g, which provides a bit of headroom for heavy compaction and write activity
on large instances.

Additionally, this patch slightly tweaks the number of concurrent writes
upwards from 32 to 48. This makes better use of the available SSD throughput,
and reduces the tendency to back up on the write stage.

Bug: T103161
Change-Id: I0ea1a46065f388cb42442b73d96ba239d3d07866
---
M hieradata/role/common/cassandra.yaml
M modules/cassandra/templates/cassandra-env.sh.erb
2 files changed, 19 insertions(+), 12 deletions(-)

Approvals:
  Filippo Giunchedi: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/hieradata/role/common/cassandra.yaml 
b/hieradata/role/common/cassandra.yaml
index 21609dd..72bdb1d 100644
--- a/hieradata/role/common/cassandra.yaml
+++ b/hieradata/role/common/cassandra.yaml
@@ -11,11 +11,12 @@
     - restbase1004.eqiad.wmnet
     - restbase1005.eqiad.wmnet
     - restbase1006.eqiad.wmnet
-cassandra::max_heap_size: 8g
+cassandra::max_heap_size: 12g
 # 1/4 heap size, no more than 100m/thread
 cassandra::heap_newsize: 2048m
 cassandra::compaction_throughput_mb_per_sec: 160
 cassandra::concurrent_compactors: 10
+cassandra::concurrent_writes: 48
 
 cassandra::dc: "%{::site}"
 cassandra::cluster_name: "%{::site}"
diff --git a/modules/cassandra/templates/cassandra-env.sh.erb 
b/modules/cassandra/templates/cassandra-env.sh.erb
index d78659d..d1720fa 100644
--- a/modules/cassandra/templates/cassandra-env.sh.erb
+++ b/modules/cassandra/templates/cassandra-env.sh.erb
@@ -196,7 +196,7 @@
 # out.
 JVM_OPTS="$JVM_OPTS -Xms${MAX_HEAP_SIZE}"
 JVM_OPTS="$JVM_OPTS -Xmx${MAX_HEAP_SIZE}"
-JVM_OPTS="$JVM_OPTS -Xmn${HEAP_NEWSIZE}"
+#JVM_OPTS="$JVM_OPTS -Xmn${HEAP_NEWSIZE}"
 JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError"
 
 # set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR
@@ -214,16 +214,22 @@
 JVM_OPTS="$JVM_OPTS -XX:StringTableSize=1000003"
 
 # 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=5"
-JVM_OPTS="$JVM_OPTS -XX:CMSInitiatingOccupancyFraction=78"
-JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
-JVM_OPTS="$JVM_OPTS -XX:+UseTLAB"
-JVM_OPTS="$JVM_OPTS -XX:CompileCommandFile=$CASSANDRA_CONF/hotspot_compiler"
-JVM_OPTS="$JVM_OPTS -XX:CMSWaitDuration=10000"
+#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=5"
+#JVM_OPTS="$JVM_OPTS -XX:CMSInitiatingOccupancyFraction=78"
+#JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
+#JVM_OPTS="$JVM_OPTS -XX:+UseTLAB"
+#JVM_OPTS="$JVM_OPTS -XX:CompileCommandFile=$CASSANDRA_CONF/hotspot_compiler"
+#JVM_OPTS="$JVM_OPTS -XX:CMSWaitDuration=10000"
+
+# GC tuning options for g1gc
+# See https://phabricator.wikimedia.org/T103161
+JVM_OPTS="$JVM_OPTS -XX:+UseG1GC"
+JVM_OPTS="$JVM_OPTS -XX:G1RSetUpdatingPauseTimePercent=5"
+JVM_OPTS="$JVM_OPTS -XX:MaxGCPauseMillis=300"
 
 # note: bash evals '1.7.x' as > '1.7' so this is really a >= 1.7 jvm check
 if [ "$JVM_ARCH" = "64-Bit" ] ; then

-- 
To view, visit https://gerrit.wikimedia.org/r/221993
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0ea1a46065f388cb42442b73d96ba239d3d07866
Gerrit-PatchSet: 3
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: GWicke <gwi...@wikimedia.org>
Gerrit-Reviewer: Eevans <eev...@wikimedia.org>
Gerrit-Reviewer: Filippo Giunchedi <fgiunch...@wikimedia.org>
Gerrit-Reviewer: GWicke <gwi...@wikimedia.org>
Gerrit-Reviewer: Mobrovac <mobro...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to