diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-02-24 14:33:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-24 14:33:49 +0100 |
commit | 88cfafdd9e56d97f021061ad3f460689fda62567 (patch) | |
tree | f8a389014c5e2313019b86fe62bf86eedae3b626 /config-model | |
parent | 683eb8658cb1c20a3ff98d529b8553f17240e6e3 (diff) | |
parent | 24d719637a8b047021741f517e8b85dfc2e69f33 (diff) |
Merge pull request #21368 from vespa-engine/geirst/more-disk-headroom-for-content-nodes
Give content nodes more headroom when deriving resource limit for disk.
Diffstat (limited to 'config-model')
3 files changed, 18 insertions, 17 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java index 80dd17213f3..58098e09d7e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java @@ -91,8 +91,8 @@ public class ClusterResourceLimits { deriveClusterControllerLimit(ctrlBuilder.getDiskLimit(), nodeBuilder.getDiskLimit(), ctrlBuilder::setDiskLimit); deriveClusterControllerLimit(ctrlBuilder.getMemoryLimit(), nodeBuilder.getMemoryLimit(), ctrlBuilder::setMemoryLimit); - deriveContentNodeLimit(nodeBuilder.getDiskLimit(), ctrlBuilder.getDiskLimit(), nodeBuilder::setDiskLimit); - deriveContentNodeLimit(nodeBuilder.getMemoryLimit(), ctrlBuilder.getMemoryLimit(), nodeBuilder::setMemoryLimit); + deriveContentNodeLimit(nodeBuilder.getDiskLimit(), ctrlBuilder.getDiskLimit(), 0.6, nodeBuilder::setDiskLimit); + deriveContentNodeLimit(nodeBuilder.getMemoryLimit(), ctrlBuilder.getMemoryLimit(), 0.5, nodeBuilder::setMemoryLimit); } private void considerSettingDefaultClusterControllerLimit(Optional<Double> clusterControllerLimit, @@ -117,15 +117,16 @@ public class ClusterResourceLimits { private void deriveContentNodeLimit(Optional<Double> contentNodeLimit, Optional<Double> clusterControllerLimit, + double scaleFactor, Consumer<Double> setter) { if (contentNodeLimit.isEmpty()) { clusterControllerLimit.ifPresent(limit -> - setter.accept(calcContentNodeLimit(limit))); + setter.accept(calcContentNodeLimit(limit, scaleFactor))); } } - private double calcContentNodeLimit(double clusterControllerLimit) { - return clusterControllerLimit + ((1.0 - clusterControllerLimit) / 2); + private double calcContentNodeLimit(double clusterControllerLimit, double scaleFactor) { + return clusterControllerLimit + ((1.0 - clusterControllerLimit) * scaleFactor); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java index c9863cf2144..cf7cd07e440 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java @@ -62,11 +62,11 @@ public class ClusterResourceLimitsTest { @Test public void content_node_limits_are_derived_from_cluster_controller_limits_if_not_set() { - assertLimits(0.4, 0.7, 0.7, 0.85, + assertLimits(0.4, 0.7, 0.76, 0.85, new Fixture().ctrlDisk(0.4).ctrlMemory(0.7)); - assertLimits(0.4, 0.8, 0.7, 0.9, + assertLimits(0.4, 0.8, 0.76, 0.9, new Fixture().ctrlDisk(0.4)); - assertLimits(0.75, 0.7, 0.875, 0.85, + assertLimits(0.75, 0.7, 0.9, 0.85, new Fixture().ctrlMemory(0.7)); } @@ -76,7 +76,7 @@ public class ClusterResourceLimitsTest { new Fixture().ctrlDisk(0.4).ctrlMemory(0.7).nodeDisk(0.9).nodeMemory(0.95)); assertLimits(0.4, 0.8, 0.95, 0.9, new Fixture().ctrlDisk(0.4).nodeDisk(0.95)); - assertLimits(0.75, 0.7, 0.875, 0.95, + assertLimits(0.75, 0.7, 0.9, 0.95, new Fixture().ctrlMemory(0.7).nodeMemory(0.95)); } @@ -86,15 +86,15 @@ public class ClusterResourceLimitsTest { new Fixture().nodeDisk(0.9).nodeMemory(0.95)); assertLimits(0.89, 0.8, 0.9, 0.9, new Fixture().nodeDisk(0.9)); - assertLimits(0.75, 0.94, 0.875, 0.95, + assertLimits(0.75, 0.94, 0.9, 0.95, new Fixture().nodeMemory(0.95)); - assertLimits(0.75, 0.0, 0.875, 0.005, + assertLimits(0.75, 0.0, 0.9, 0.005, new Fixture().nodeMemory(0.005)); } @Test public void limits_are_derived_from_the_other_if_not_set() { - assertLimits(0.6, 0.94, 0.8, 0.95, + assertLimits(0.6, 0.94, 0.84, 0.95, new Fixture().ctrlDisk(0.6).nodeMemory(0.95)); assertLimits(0.89, 0.7, 0.9, 0.85, new Fixture().ctrlMemory(0.7).nodeDisk(0.9)); @@ -102,7 +102,7 @@ public class ClusterResourceLimitsTest { @Test public void default_resource_limits_when_feed_block_is_enabled_in_distributor() { - assertLimits(0.75, 0.8, 0.875, 0.9, + assertLimits(0.75, 0.8, 0.9, 0.9, new Fixture(true)); } @@ -125,7 +125,7 @@ public class ClusterResourceLimitsTest { // Verify that limits from feature flags are used assertLimits(0.85, 0.90, limits.getClusterControllerLimits()); - assertLimits(0.925, 0.95, limits.getContentNodeLimits()); + assertLimits(0.94, 0.95, limits.getContentNodeLimits()); } @Test diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java index ff399fd2294..67260ce1f9d 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSchemaClusterTest.java @@ -118,7 +118,7 @@ public class ContentSchemaClusterTest { @Test public void requireThatOnlyMemoryLimitCanBeSet() throws Exception { - assertProtonResourceLimits(0.875, 0.77, + assertProtonResourceLimits(0.9, 0.77, new ContentClusterBuilder().protonMemoryLimit(0.77).getXml()); } @@ -131,14 +131,14 @@ public class ContentSchemaClusterTest { @Test public void resource_limits_are_derived_from_the_other_if_not_specified() throws Exception { var cluster = createCluster(new ContentClusterBuilder().clusterControllerDiskLimit(0.5).protonMemoryLimit(0.95).getXml()); - assertProtonResourceLimits(0.75, 0.95, cluster); + assertProtonResourceLimits(0.8, 0.95, cluster); assertClusterControllerResourceLimits(0.5, 0.94, cluster); } @Test public void default_resource_limits_with_feed_block_in_distributor() throws Exception { var cluster = createCluster(new ContentClusterBuilder().getXml()); - assertProtonResourceLimits(0.875, 0.9, cluster); + assertProtonResourceLimits(0.9, 0.9, cluster); assertClusterControllerResourceLimits(0.75, 0.8, cluster); } |