You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/10/07 05:49:00 UTC
svn commit: r1179931 - in /cassandra/branches/cassandra-1.0.0: CHANGES.txt
conf/cassandra.yaml src/java/org/apache/cassandra/config/Config.java
src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Author: jbellis
Date: Fri Oct 7 03:48:59 2011
New Revision: 1179931
URL: http://svn.apache.org/viewvc?rev=1179931&view=rev
Log:
default hsha thrift server to cpu core count in rpc pool
patch by jbellis; reviewed by brandonwilliams for CASSANDRA-3329
Modified:
cassandra/branches/cassandra-1.0.0/CHANGES.txt
cassandra/branches/cassandra-1.0.0/conf/cassandra.yaml
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/Config.java
cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Modified: cassandra/branches/cassandra-1.0.0/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/CHANGES.txt?rev=1179931&r1=1179930&r2=1179931&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0.0/CHANGES.txt Fri Oct 7 03:48:59 2011
@@ -10,6 +10,7 @@
* add estimated tasks to LeveledCompactionStrategy (CASSANDRA-3322)
* avoid including compaction cache-warming in keycache stats (CASSANDRA-3325)
* run compaction and hinted handoff threads at MIN_PRIORITY (CASSANDRA-3308)
+ * default hsha thrift server to cpu core count in rpc pool (CASSANDRA-3329)
Fixes merged from 0.8 below:
* Fix tool .bat files when CASSANDRA_HOME contains spaces (CASSANDRA-3258)
* Force flush of status table when removing/updating token (CASSANDRA-3243)
Modified: cassandra/branches/cassandra-1.0.0/conf/cassandra.yaml
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/conf/cassandra.yaml?rev=1179931&r1=1179930&r2=1179931&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/conf/cassandra.yaml (original)
+++ cassandra/branches/cassandra-1.0.0/conf/cassandra.yaml Fri Oct 7 03:48:59 2011
@@ -193,35 +193,35 @@ rpc_port: 9160
# enable or disable keepalive on rpc connections
rpc_keepalive: true
-# Cassandra provides you with a variety of options for RPC Server
-# sync -> Creates one thread per connection but with a configurable number of
-# threads. This can be expensive in memory used for thread stack for
-# a large enough number of clients. (Hence, connection pooling is
-# very, very strongly recommended.)
+# Cassandra provides three options for the RPC Server:
+#
+# sync -> One connection per thread in the rpc pool (see below).
+# For a very large number of clients, memory will be your limiting
+# factor; on a 64 bit JVM, 128KB is the minimum stack size per thread.
+# Connection pooling is very, very strongly recommended.
#
# async -> Nonblocking server implementation with one thread to serve
-# rpc connections. This is not recommended for high throughput use
-# cases.
+# rpc connections. This is not recommended for high throughput use
+# cases. Async has been tested to be about 50% slower than sync
+# or hsha and is deprecated: it will be removed in the next major release.
+#
+# hsha -> Stands for "half synchronous, half asynchronous." The rpc thread pool
+# (see below) is used to manage requests, but the threads are multiplexed
+# across the different clients.
#
-# hsha -> half sync and half async implementation with configurable number
-# of worker threads (For managing connections). IO Management is
-# done by a set of threads currently equal to the number of
-# processors in the system. The number of threads in the threadpool
-# is configured via rpc_min_threads and rpc_max_threads. (Connection
-# pooling is strongly recommended in this case too.)
-
+# The default is sync because on Windows hsha is about 30% slower. On Linux,
+# sync/hsha performance is about the same, with hsha of course using less memory.
rpc_server_type: sync
# Uncomment rpc_min|max|thread to set request pool size.
# You would primarily set max for the sync server to safeguard against
# misbehaved clients; if you do hit the max, Cassandra will block until one
-# disconnects before accepting more. The defaults are min of 16 and max
+# disconnects before accepting more. The defaults for sync are min of 16 and max
# unlimited.
#
-# For the Hsha server, you would set the max so that a fair amount of resources
-# are provided to the other working threads on the server.
+# For the Hsha server, the min and max both default to the number of CPU cores.
#
-# This configuration is not used for the async server.
+# This configuration is ignored by the async server.
#
# rpc_min_threads: 16
# rpc_max_threads: 2048
Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/Config.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/Config.java?rev=1179931&r1=1179930&r2=1179931&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/Config.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/Config.java Fri Oct 7 03:48:59 2011
@@ -69,8 +69,8 @@ public class Config
public Integer rpc_port = 9160;
public String rpc_server_type = "sync";
public Boolean rpc_keepalive = true;
- public Integer rpc_min_threads = 16;
- public Integer rpc_max_threads = Integer.MAX_VALUE;
+ public Integer rpc_min_threads = null;
+ public Integer rpc_max_threads = null;
public Integer rpc_send_buff_size_in_bytes;
public Integer rpc_recv_buff_size_in_bytes;
Modified: cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=1179931&r1=1179930&r2=1179931&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ cassandra/branches/cassandra-1.0.0/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Fri Oct 7 03:48:59 2011
@@ -365,7 +365,15 @@ public class DatabaseDescriptor
if (!CassandraDaemon.rpc_server_types.contains(conf.rpc_server_type.toLowerCase()))
throw new ConfigurationException("Unknown rpc_server_type: " + conf.rpc_server_type);
-
+ if (conf.rpc_min_threads == null)
+ conf.rpc_min_threads = conf.rpc_server_type.toLowerCase().equals("hsha")
+ ? Runtime.getRuntime().availableProcessors()
+ : 16;
+ if (conf.rpc_max_threads == null)
+ conf.rpc_max_threads = conf.rpc_server_type.toLowerCase().equals("hsha")
+ ? Runtime.getRuntime().availableProcessors()
+ : Integer.MAX_VALUE;
+
/* data file and commit log directories. they get created later, when they're needed. */
if (conf.commitlog_directory != null && conf.data_file_directories != null && conf.saved_caches_directory != null)
{