diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-30 15:30:29 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-30 15:30:29 +0200 |
commit | 3027edb077b126b760f1d374a2b753ef69204973 (patch) | |
tree | d42da91853c900c7313978a597d62d296cf8757f /container-core/src/main/java/com/yahoo/container | |
parent | 5372cf371b4cffa127604af76e87432297358bab (diff) |
Use minimum 8 threads when config contains a scale factor
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container')
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); } |