aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java8
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java5
3 files changed, 6 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java
index bdf9b96d6c5..d3001bd9100 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java
@@ -49,7 +49,7 @@ class SearchHandler extends ProcessingHandler<SearchChains> {
// User options overrides below configuration
if (hasUserOptions()) return;
if (cluster.isHostedVespa()) {
- builder.maxThreads(-2).minThreads(8).queueSize(-40);
+ builder.maxThreads(-2).minThreads(-2).queueSize(-40);
} else {
builder.maxThreads(500).minThreads(500).queueSize(0);
}
diff --git a/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java b/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java
index 081cefbd7eb..a07898cb1d1 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java
@@ -38,14 +38,10 @@ public class ThreadPoolProvider extends AbstractComponent implements Provider<Ex
* as {@link ThreadpoolConfig} is currently public api.
*/
private static ContainerThreadpoolConfig translateConfig(ThreadpoolConfig config) {
- int cpus = Runtime.getRuntime().availableProcessors();
- int max = config.maxthreads() >= 0 ? config.maxthreads() : Math.max(8, Math.abs(config.maxthreads()) * cpus);
- int min = config.corePoolSize() >= 0 ? config.corePoolSize() : Math.max(8, Math.abs(config.corePoolSize()) * cpus);
-
return new ContainerThreadpoolConfig(
new ContainerThreadpoolConfig.Builder()
- .maxThreads(max)
- .minThreads(min)
+ .maxThreads(config.maxthreads())
+ .minThreads(config.corePoolSize())
.name(config.name())
.queueSize(config.queueSize())
.keepAliveTime(config.keepAliveTime())
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java
index b55cd9bf3b5..7f4d1462102 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java
@@ -26,6 +26,7 @@ public class DefaultContainerThreadpool extends AbstractComponent implements Aut
private static final Logger log = Logger.getLogger(DefaultContainerThreadpool.class.getName());
private static final int MIN_QUEUE_SIZE = 650;
+ private static final int MIN_THREADS_WHEN_SCALE_FACTOR = 8;
private final ExecutorServiceWrapper threadpool;
@@ -94,14 +95,14 @@ public class DefaultContainerThreadpool extends AbstractComponent implements Aut
private static int maxThreads(ContainerThreadpoolConfig config, int cpus) {
if (config.maxThreads() > 0) return config.maxThreads();
else if (config.maxThreads() == 0) return 4 * cpus;
- else return Math.abs(config.maxThreads()) * cpus;
+ else return Math.max(MIN_THREADS_WHEN_SCALE_FACTOR, Math.abs(config.maxThreads()) * cpus);
}
private static int minThreads(ContainerThreadpoolConfig config, int max, int cpus) {
int threads;
if (config.minThreads() > 0) threads = config.minThreads();
else if (config.minThreads() == 0) threads = 4 * cpus;
- else threads = Math.abs(config.minThreads()) * cpus;
+ else threads = Math.max(MIN_THREADS_WHEN_SCALE_FACTOR, Math.abs(config.minThreads()) * cpus);
return Math.min(threads, max);
}