aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-11-01 15:38:13 +0100
committerGitHub <noreply@github.com>2021-11-01 15:38:13 +0100
commitf2d3685aff36e286a4aafdb90a019bbad36ddc0d (patch)
tree1e3b8cffbf0ebb898069978879c364179085f608
parent6ee784342effb6533bcfee478ceb6f5bd7a1683a (diff)
parentd2d9e2005ee4e92266a6ac052ea76fd914dce1e3 (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.java7
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,