Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 556E210118 for ; Tue, 19 May 2015 16:34:05 +0000 (UTC) Received: (qmail 26317 invoked by uid 500); 19 May 2015 16:34:05 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 26282 invoked by uid 500); 19 May 2015 16:34:05 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 26270 invoked by uid 99); 19 May 2015 16:34:05 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 May 2015 16:34:05 +0000 Date: Tue, 19 May 2015 16:34:05 +0000 (UTC) From: "Michael Perrone (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Comment Edited] (CASSANDRA-7486) Compare CMS and G1 pause times MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CASSANDRA-7486?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14550721#comment-14550721 ] Michael Perrone edited comment on CASSANDRA-7486 at 5/19/15 4:33 PM: --------------------------------------------------------------------- I have done extensive load testing with G1GC with Java 1.7_80 and Cassandra 2.0.12.x versions with solr secondary indexes and 20GB max heap. On 8 core systems these options were the sweet spot for the test workload and worked out well in a production cluster, providing dramatic improvements in overall GC time and eliminating long CMS pauses that we could not tune out. I will try to attach some graphs/tables/metrics in another comment. {code} JVM_OPTS="$JVM_OPTS -XX:+UseG1GC" # set these to the number of cores JVM_OPTS="$JVM_OPTS -XX:ConcGCThreads=8" JVM_OPTS="$JVM_OPTS -XX:ParallelGCThreads=8" JVM_OPTS="$JVM_OPTS -XX:SurvivorRatio=8" # default is 10, this makes G1 slightly more aggressive # by starting the marking cycle earlier # in order to avoid evacuation failure (OOM) JVM_OPTS="$JVM_OPTS -XX:G1ReservePercent=15" # default is 45, we should start sooner. # in a high write large heap (20GB) this was # found to eliminate Old gen pauses JVM_OPTS="$JVM_OPTS -XX:InitiatingHeapOccupancyPercent=25" # default is 200 there is a tradeoff between latency # and throughput. increase this to increase throughput # at the cost of potential latency, up to 1000 JVM_OPTS="$JVM_OPTS -XX:MaxGCPauseMillis=500" # use largest possible region size # speeds up marking phase, tradeoff is efficiency # comment out to let JVM decide the size JVM_OPTS="$JVM_OPTS -XX:G1HeapRegionSize=32" {code} was (Author: michael.perrone): I have done extensive load testing with G1GC with Java 1.7_80 and Cassandra 2.0.12.x versions with solr secondary indexes and 20GB max heap. On 8 core systems these options were the sweet spot for the test workload and worked out well in a production cluster, providing dramatic improvements in overall GC time and eliminating long CMS pauses that we could not tune out. I will try to attach some graphs/tables/metrics in another comment. {code} JVM_OPTS="$JVM_OPTS -XX:+UseG1GC" # set these to the number of cores JVM_OPTS="$JVM_OPTS -XX:ConcGCThreads=8" JVM_OPTS="$JVM_OPTS -XX:ParallelGCThreads=8" JVM_OPTS="$JVM_OPTS -XX:SurvivorRatio=8" # default is 10, this makes G1 slightly more aggressive # by starting the marking cycle earlier # in order to avoid evacuation failure (OOM) JVM_OPTS="$JVM_OPTS -XX:G1ReservePercent=15" # default is 45, we should start sooner. # in a high write large heap (20GB) this was # found to eliminate Old gen pauses JVM_OPTS="$JVM_OPTS -XX:InitiatingHeapOccupancyPercent=25" # default is 200 there is a tradeoff between latency # and throughput. increase this to increase throughput # at the cost of potential latency, up to 1000 JVM_OPTS="$JVM_OPTS -XX:MaxGCPauseMillis=500" # use largest possible region size # speeds up marking phase, tradeoff is efficiency # comment out to let JVM decide the size VM_OPTS="$JVM_OPTS -XX:G1HeapRegionSize=32" {code} > Compare CMS and G1 pause times > ------------------------------ > > Key: CASSANDRA-7486 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7486 > Project: Cassandra > Issue Type: Test > Components: Config > Reporter: Jonathan Ellis > Assignee: Shawn Kumar > Fix For: 2.1.x > > > See http://www.slideshare.net/MonicaBeckwith/garbage-first-garbage-collector-g1-7486gc-migration-to-expectations-and-advanced-tuning and https://twitter.com/rbranson/status/482113561431265281 > May want to default 2.1 to G1. > 2.1 is a different animal from 2.0 after moving most of memtables off heap. Suspect this will help G1 even more than CMS. (NB this is off by default but needs to be part of the test.) -- This message was sent by Atlassian JIRA (v6.3.4#6332)