From e00878d9558d9220ef864c6dfb69293ada36e2bd Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Wed, 21 May 2014 13:11:16 -0500 Subject: [PATCH] Change concurrent_compactors defaults patch by jbellis; reviewed by bes for CASSANDRA-7139 --- CHANGES.txt | 1 + conf/cassandra.yaml | 4 ++-- src/java/org/apache/cassandra/config/Config.java | 2 +- src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 209ff70c6f..61ea788689 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.0-rc1 + * Change concurrent_compactors defaults (CASSANDRA-7139) * Add PowerShell Windows launch scripts (CASSANDRA-7001) * Make commitlog archive+restore more robust (CASSANDRA-6974) * Fix marking commitlogsegments clean (CASSANDRA-6959) diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index 6e47918b58..b9964edeca 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -500,8 +500,8 @@ in_memory_compaction_limit_in_mb: 64 # slowly or too fast, you should look at # compaction_throughput_mb_per_sec first. # -# concurrent_compactors defaults to the number of cores. -# Uncomment to make compaction mono-threaded, the pre-0.8 default. +# concurrent_compactors defaults to the smaller of (number of disks, +# number of cores), with a minimum of 2 and a maximum of 8. #concurrent_compactors: 1 # Throttles compaction to the given total throughput across the entire diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index 97ceb7f859..07d0a5966d 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -132,7 +132,7 @@ public class Config public Integer column_index_size_in_kb = 64; public Integer batch_size_warn_threshold_in_kb = 5; public Integer in_memory_compaction_limit_in_mb = 64; - public Integer concurrent_compactors = FBUtilities.getAvailableProcessors(); + public Integer concurrent_compactors; public volatile Integer compaction_throughput_mb_per_sec = 16; public Integer max_streaming_retries = 3; diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 7688383f53..c916fea703 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -453,7 +453,7 @@ public class DatabaseDescriptor } if (conf.concurrent_compactors == null) - conf.concurrent_compactors = FBUtilities.getAvailableProcessors(); + conf.concurrent_compactors = Math.min(8, Math.max(2, Math.min(FBUtilities.getAvailableProcessors(), conf.data_file_directories.length))); if (conf.concurrent_compactors <= 0) throw new ConfigurationException("concurrent_compactors should be strictly greater than 0");