summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-09-11 08:37:18 +0200
committerGitHub <noreply@github.com>2020-09-11 08:37:18 +0200
commitb5bde398f1c4823c0abc8c34b51cd40610cbcdba (patch)
tree50e2066958da1cc04934c8c91595b609c6e56714
parentfe641da37ca8f886d62e3a6d37fb259d4ac73a68 (diff)
parent0eca2c21d12f3ffe8c2786839f06b3d23eebd46e (diff)
Merge pull request #14372 from vespa-engine/havardpe/set-omp-num-threads-in-the-config-model
set env variable in the config model
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java10
-rw-r--r--configd/src/apps/sentinel/service.cpp3
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)