summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-10-23 23:03:54 +0200
committerGitHub <noreply@github.com>2019-10-23 23:03:54 +0200
commit484cd47a646b785061b6796f47491dc8b1ca0b0a (patch)
tree0f437f4bc82420f0f6d159539f1e97e240156f38
parente6b5bbe7b1a2cddd447a8fb2f402d8373bdba17c (diff)
parent440d846974446660274f8fa21fca2242dfad9fe8 (diff)
Merge pull request #11061 from vespa-engine/hmusum/let-number-of-rpc-threads-depend-on-hw
Let number of Rpc threads depend on number of available processors
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java12
1 files changed, 7 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
index e2c1139e4a8..29acb44045d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
@@ -80,7 +80,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
static final int TRACELEVEL_DEBUG = 9;
private static final String THREADPOOL_NAME = "rpcserver worker pool";
private static final long SHUTDOWN_TIMEOUT = 60;
- private static final int JRT_RPC_TRANSPORT_THREADS = 4;
+ private static final int JRT_RPC_TRANSPORT_THREADS = threadsToUse();
private final Supervisor supervisor = new Supervisor(new Transport(JRT_RPC_TRANSPORT_THREADS));
private Spec spec;
@@ -131,10 +131,8 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
this.metrics = metrics.getOrCreateMetricUpdater(Collections.emptyMap());
this.hostLivenessTracker = hostLivenessTracker;
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(config.maxgetconfigclients());
- int numberOfRpcThreads = (config.numRpcThreads() == 0)
- ? Math.max(8, Runtime.getRuntime().availableProcessors())
- : config.numRpcThreads();
- executorService = new ThreadPoolExecutor(numberOfRpcThreads, numberOfRpcThreads,
+ int rpcWorkerThreads = (config.numRpcThreads() == 0) ? threadsToUse() : config.numRpcThreads();
+ executorService = new ThreadPoolExecutor(rpcWorkerThreads, rpcWorkerThreads,
0, TimeUnit.SECONDS, workQueue, ThreadFactoryFactory.getThreadFactory(THREADPOOL_NAME));
delayedConfigResponses = new DelayedConfigResponses(this, config.numDelayedResponseThreads());
spec = new Spec(null, config.rpcport());
@@ -149,6 +147,10 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
setUpHandlers();
}
+ private static int threadsToUse() {
+ return Math.max(8, Runtime.getRuntime().availableProcessors());
+ }
+
/**
* Handles RPC method "config.v3.getConfig" requests.
* Uses the template pattern to call methods in classes that extend RpcServer.