summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-01-18 07:01:57 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-01-18 07:01:57 +0100
commit7f4afd126f231f9fed62e5acedef1bfce3a3d63b (patch)
tree747ba1181d79bd711ce3c0e273a148251fdd56c1
parent7e0c5b69ff9e99447dd7cf223321e760f4f2a130 (diff)
Add flag to control number of processors a non-application jvm gets to use.
Intention is to lower this number from 2 to 1 in order to reduce memory footprint for small containers.
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java1
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java7
4 files changed, 15 insertions, 2 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index f4cffd5a724..d509fa5dd6a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -84,6 +84,7 @@ public interface ModelContext {
@ModelFeatureFlag(owners = {"baldersheim"}) default double feedConcurrency() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"baldersheim"}, removeAfter = "7.527") default int metricsproxyNumThreads() { return defaultPoolNumThreads(); }
@ModelFeatureFlag(owners = {"baldersheim"}) default int defaultPoolNumThreads() { return 2; }
+ @ModelFeatureFlag(owners = {"baldersheim"}) default int availableProcessors() { return 2; }
@ModelFeatureFlag(owners = {"baldersheim"}, removeAfter = "7.527") default int largeRankExpressionLimit() { return 8192; }
@ModelFeatureFlag(owners = {"baldersheim"}) default int maxUnCommittedMemory() { return 130000; }
@ModelFeatureFlag(owners = {"baldersheim"}) default int maxConcurrentMergesPerNode() { return 16; }
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index 7010d7b3d4e..982d886cbea 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -146,6 +146,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
private final ComponentGroup<Component<?, ?>> componentGroup;
private final boolean isHostedVespa;
private final boolean zooKeeperLocalhostAffinity;
+ private final int numAvailableProcessors;
private final Map<String, String> concreteDocumentTypes = new LinkedHashMap<>();
@@ -166,6 +167,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
this.isHostedVespa = stateIsHosted(deployState);
this.zone = (deployState != null) ? deployState.zone() : Zone.defaultZone();
this.zooKeeperLocalhostAffinity = zooKeeperLocalhostAffinity;
+ numAvailableProcessors = deployState.featureFlags().availableProcessors();
componentGroup = new ComponentGroup<>(this, "component");
@@ -493,7 +495,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public void getConfig(QrStartConfig.Builder builder) {
builder.jvm
.verbosegc(false)
- .availableProcessors(2)
+ .availableProcessors(numAvailableProcessors)
.compressedClassSpaceSize(32)
.minHeapsize(32)
.heapsize(256)
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
index 03ba8fd5efd..b8f79682a03 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
@@ -187,6 +187,7 @@ public class ModelContextImpl implements ModelContext {
private final double resourceLimitMemory;
private final double minNodeRatioPerGroup;
private final int metricsproxyNumThreads;
+ private final int availableProcessors;
private final boolean containerDumpHeapOnShutdownTimeout;
private final double containerShutdownTimeout;
private final int maxUnCommittedMemory;
@@ -225,9 +226,10 @@ public class ModelContextImpl implements ModelContext {
this.resourceLimitMemory = flagValue(source, appId, PermanentFlags.RESOURCE_LIMIT_MEMORY);
this.minNodeRatioPerGroup = flagValue(source, appId, Flags.MIN_NODE_RATIO_PER_GROUP);
this.metricsproxyNumThreads = flagValue(source, appId, Flags.METRICSPROXY_NUM_THREADS);
+ this.availableProcessors = flagValue(source, appId, Flags.AVAILABLE_PROCESSORS);
this.containerDumpHeapOnShutdownTimeout = flagValue(source, appId, Flags.CONTAINER_DUMP_HEAP_ON_SHUTDOWN_TIMEOUT);
this.containerShutdownTimeout = flagValue(source, appId,Flags.CONTAINER_SHUTDOWN_TIMEOUT);
- this.maxUnCommittedMemory = flagValue(source, appId, Flags.MAX_UNCOMMITTED_MEMORY);;
+ this.maxUnCommittedMemory = flagValue(source, appId, Flags.MAX_UNCOMMITTED_MEMORY);
this.forwardIssuesAsErrors = flagValue(source, appId, PermanentFlags.FORWARD_ISSUES_AS_ERRORS);
this.ignoreThreadStackSizes = flagValue(source, appId, Flags.IGNORE_THREAD_STACK_SIZES);
this.unorderedMergeChaining = flagValue(source, appId, Flags.UNORDERED_MERGE_CHAINING);
@@ -265,6 +267,7 @@ public class ModelContextImpl implements ModelContext {
@Override public double resourceLimitMemory() { return resourceLimitMemory; }
@Override public double minNodeRatioPerGroup() { return minNodeRatioPerGroup; }
@Override public int defaultPoolNumThreads() { return metricsproxyNumThreads; }
+ @Override public int availableProcessors() { return availableProcessors; }
@Override public double containerShutdownTimeout() { return containerShutdownTimeout; }
@Override public boolean containerDumpHeapOnShutdownTimeout() { return containerDumpHeapOnShutdownTimeout; }
@Override public int maxUnCommittedMemory() { return maxUnCommittedMemory; }
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 1013cd229b0..ce9f1c80a1e 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -222,6 +222,13 @@ public class Flags {
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
+ public static final UnboundIntFlag AVAILABLE_PROCESSORS = defineIntFlag(
+ "available-processors", 2,
+ List.of("balder"), "2022-18-01", "2022-04-01",
+ "Number of processors the jvm sees in non-application clusters",
+ "Takes effect at redeployment",
+ ZONE_ID, APPLICATION_ID);
+
public static final UnboundBooleanFlag ENABLED_HORIZON_DASHBOARD = defineFeatureFlag(
"enabled-horizon-dashboard", false,
List.of("olaa"), "2021-09-13", "2022-02-01",