diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-11-01 15:38:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-01 15:38:13 +0100 |
commit | f2d3685aff36e286a4aafdb90a019bbad36ddc0d (patch) | |
tree | 1e3b8cffbf0ebb898069978879c364179085f608 | |
parent | 6ee784342effb6533bcfee478ceb6f5bd7a1683a (diff) | |
parent | d2d9e2005ee4e92266a6ac052ea76fd914dce1e3 (diff) |
Merge pull request #19810 from vespa-engine/balder/limit-threads-also-by-memory
Require that you have at least 1G per thread as each of them can requ…
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java index 1499100307c..70e7dbe19ec 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java @@ -221,9 +221,12 @@ public class TenantRepository { } private ExecutorService createModelBuilderExecutor(int numThreads) { + final long GB = 1024*1024*1024; if (numThreads == 0) return new InThreadExecutorService(); if (numThreads < 0) { - numThreads = Runtime.getRuntime().availableProcessors(); + long maxHeap = Runtime.getRuntime().maxMemory(); + int maxThreadsToFitInMemory = (int)((maxHeap + (GB - 1))/(1*GB)); + numThreads = Math.min(Runtime.getRuntime().availableProcessors(), maxThreadsToFitInMemory); } return Executors.newFixedThreadPool(numThreads, ThreadFactoryFactory.getDaemonThreadFactory("deploy-helper")); } @@ -348,7 +351,7 @@ public class TenantRepository { PermanentApplicationPackage permanentApplicationPackage = new PermanentApplicationPackage(configserverConfig); SessionPreparer sessionPreparer = new SessionPreparer(modelFactoryRegistry, fileDistributionFactory, - deployHelperExecutor, + deployHelperExecutor, hostProvisionerProvider, permanentApplicationPackage, configserverConfig, |