diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-11 08:37:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-11 08:37:18 +0200 |
commit | b5bde398f1c4823c0abc8c34b51cd40610cbcdba (patch) | |
tree | 50e2066958da1cc04934c8c91595b609c6e56714 | |
parent | fe641da37ca8f886d62e3a6d37fb259d4ac73a68 (diff) | |
parent | 0eca2c21d12f3ffe8c2786839f06b3d23eebd46e (diff) |
Merge pull request #14372 from vespa-engine/havardpe/set-omp-num-threads-in-the-config-model
set env variable in the config model
4 files changed, 20 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java index 75b33e184d9..5ef01f986c0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java @@ -61,6 +61,9 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon // If this is true it will dump core when OOM private boolean coreOnOOM = false; + // If greater than 0, controls the number of threads used by open mp + private int ompNumThreads = 0; + private String noVespaMalloc = ""; private String vespaMalloc = ""; private String vespaMallocDebug = ""; @@ -392,6 +395,8 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon public void setMMapNoCoreLimit(long noCoreLimit) { this.mmapNoCoreLimit = noCoreLimit; } public boolean getCoreOnOOM() { return coreOnOOM; } public void setCoreOnOOM(boolean coreOnOOM) { this.coreOnOOM = coreOnOOM; } + public int getOmpNumThreads() { return ompNumThreads; } + public void setOmpNumThreads(int value) { ompNumThreads = value; } public String getNoVespaMalloc() { return noVespaMalloc; } public String getVespaMalloc() { return vespaMalloc; } @@ -411,6 +416,11 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon public String getCoreOnOOMEnvVariable() { return getCoreOnOOM() ? "" : "VESPA_SILENCE_CORE_ON_OOM=true "; } + public String getOmpNumThreadsEnvVariable() { + return (getOmpNumThreads() == 0) + ? "" + : "OMP_NUM_THREADS=" + getOmpNumThreads() + " "; + } public String getNoVespaMallocEnvVariable() { return "".equals(getNoVespaMalloc()) ? "" @@ -433,7 +443,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon } public String getEnvVariables() { - return getCoreOnOOMEnvVariable() + getMMapNoCoreEnvVariable() + getNoVespaMallocEnvVariable() + + return getCoreOnOOMEnvVariable() + getOmpNumThreadsEnvVariable() + getMMapNoCoreEnvVariable() + getNoVespaMallocEnvVariable() + getVespaMallocEnvVariable() + getVespaMallocDebugEnvVariable() + getVespaMallocDebugStackTraceEnvVariable(); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java index 738a4cf66d2..b44040f843d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java @@ -125,6 +125,7 @@ public class SearchNode extends AbstractService implements boolean flushOnShutdown, Optional<Tuning> tuning, Optional<ResourceLimits> resourceLimits, boolean isHostedVespa, boolean combined) { super(parent, name); + setOmpNumThreads(1); this.isHostedVespa = isHostedVespa; this.combined = combined; this.nodeSpec = nodeSpec; @@ -244,6 +245,9 @@ public class SearchNode extends AbstractService implements @Override public String getStartupCommand() { + if (getOmpNumThreads() != 1) { + throw new IllegalStateException("ompNumThreads must be 1"); + } String startup = getEnvVariables() + "exec $ROOT/sbin/vespa-proton " + "--identity " + getConfigId(); if (serviceLayerService != null) { startup = startup + " --serviceidentity " + serviceLayerService.getConfigId(); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java index bd44489fab7..99f8b8cbb5e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java @@ -480,7 +480,7 @@ public class ContentBuilderTest extends DomBuilderTest { assertEquals("VESPA_USE_VESPAMALLOC_D=\"distributord\" ", n.getVespaMallocDebugEnvVariable()); assertEquals("storaged", n.getVespaMalloc()); assertEquals("VESPA_USE_VESPAMALLOC_DST=\"all\" ", n.getVespaMallocDebugStackTraceEnvVariable()); - assertEquals("VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_NO_VESPAMALLOC=\"proton\" VESPA_USE_VESPAMALLOC=\"storaged\" VESPA_USE_VESPAMALLOC_D=\"distributord\" VESPA_USE_VESPAMALLOC_DST=\"all\" ", n.getEnvVariables()); + assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_NO_VESPAMALLOC=\"proton\" VESPA_USE_VESPAMALLOC=\"storaged\" VESPA_USE_VESPAMALLOC_D=\"distributord\" VESPA_USE_VESPAMALLOC_DST=\"all\" ", n.getEnvVariables()); } } @@ -509,10 +509,10 @@ public class ContentBuilderTest extends DomBuilderTest { assertFalse(b.getRootGroup().getVespaMallocDebugStackTrace().isPresent()); assertThat(s.getSearchNodes().size(), is(4)); - assertEquals("VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_NO_VESPAMALLOC=\"proton\" ", s.getSearchNodes().get(0).getEnvVariables()); - assertEquals("VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_VESPAMALLOC_D=\"distributord\" ", s.getSearchNodes().get(1).getEnvVariables()); - assertEquals("VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_VESPAMALLOC_DST=\"all\" ", s.getSearchNodes().get(2).getEnvVariables()); - assertEquals("VESPA_SILENCE_CORE_ON_OOM=true VESPA_USE_VESPAMALLOC=\"storaged\" ", s.getSearchNodes().get(3).getEnvVariables()); + assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_NO_VESPAMALLOC=\"proton\" ", s.getSearchNodes().get(0).getEnvVariables()); + assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_VESPAMALLOC_D=\"distributord\" ", s.getSearchNodes().get(1).getEnvVariables()); + assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_VESPAMALLOC_DST=\"all\" ", s.getSearchNodes().get(2).getEnvVariables()); + assertEquals("VESPA_SILENCE_CORE_ON_OOM=true OMP_NUM_THREADS=1 VESPA_USE_VESPAMALLOC=\"storaged\" ", s.getSearchNodes().get(3).getEnvVariables()); } @Test diff --git a/configd/src/apps/sentinel/service.cpp b/configd/src/apps/sentinel/service.cpp index c535d4442ee..5701d4b70e8 100644 --- a/configd/src/apps/sentinel/service.cpp +++ b/configd/src/apps/sentinel/service.cpp @@ -325,9 +325,6 @@ Service::runChild() if (_config->affinity.cpuSocket >= 0) { setenv("VESPA_AFFINITY_CPU_SOCKET", std::to_string(_config->affinity.cpuSocket).c_str(), 1); } - if (_config->command.find("proton") != vespalib::string::npos) { - setenv("OMP_NUM_THREADS", "1", 1); - } // ROOT is already set // Set up file descriptor 0 (1 and 2 should be setup already) |