summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-30 15:30:29 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-09-30 15:30:29 +0200
commit3027edb077b126b760f1d374a2b753ef69204973 (patch)
treed42da91853c900c7313978a597d62d296cf8757f /container-core
parent5372cf371b4cffa127604af76e87432297358bab (diff)
Use minimum 8 threads when config contains a scale factor
Diffstat (limited to 'container-core')
-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
2 files changed, 5 insertions, 8 deletions
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);
}