diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-05-29 16:45:46 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-05-29 16:45:46 +0200 |
commit | 0cc3b79099a495522b0cb7d5b3ecb021edd353ed (patch) | |
tree | 0e41096185b23beca40fb8a1f0d9b1fc0cb00698 /config-model/src/test | |
parent | e28cde3ea0a560c40af32133d25df08299fea8e6 (diff) |
Account for container memory in combined cluster
Diffstat (limited to 'config-model/src/test')
3 files changed, 55 insertions, 35 deletions
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java index 98bc4210602..b144ea19980 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java @@ -26,24 +26,27 @@ public class MockSearchClusters { @Override protected AbstractSearchCluster.IndexingMode getIndexingMode() { return streaming ? AbstractSearchCluster.IndexingMode.STREAMING : AbstractSearchCluster.IndexingMode.REALTIME; } - @Override - protected void assureSdConsistent() {} @Override public void getConfig(DocumentdbInfoConfig.Builder builder) { } + @Override public void getConfig(IndexInfoConfig.Builder builder) { } + @Override public void getConfig(IlscriptsConfig.Builder builder) { } + @Override public void getConfig(AttributesConfig.Builder builder) { } + @Override public void getConfig(RankProfilesConfig.Builder builder) { } + } public static AbstractSearchCluster mockSearchCluster(AbstractConfigProducerRoot root, String clusterName, int clusterIndex, boolean isStreaming) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java index d29cbd4a8e8..5df522e1b9d 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java @@ -29,8 +29,9 @@ public class NodeResourcesTuningTest { @Test public void require_that_hwinfo_memory_size_is_set() { - ProtonConfig cfg = configFromMemorySetting(24); - assertEquals(24 * GB, cfg.hwinfo().memory().size()); + double combinedFactor = 1 - 17.0/100; + assertEquals(24 * GB, configFromMemorySetting(24, false).hwinfo().memory().size()); + assertEquals(combinedFactor * 24 * GB, configFromMemorySetting(24, true).hwinfo().memory().size(), 1000); } private ProtonConfig getProtonMemoryConfig(List<Pair<String, String>> sdAndMode, int gb, int redundancy, int searchableCopies) { @@ -43,6 +44,7 @@ public class NodeResourcesTuningTest { } return configFromMemorySetting(gb, builder, redundancy, searchableCopies); } + private void verify_that_initial_numdocs_is_dependent_of_mode(int redundancy, int searchablecopies) { int divisor = Math.max(redundancy, searchablecopies); ProtonConfig cfg = getProtonMemoryConfig(Arrays.asList(new Pair<>("a", "INDEX"), new Pair<>("b", "STREAMING"), new Pair<>("c", "STORE_ONLY")), 24, redundancy, searchablecopies); @@ -54,6 +56,7 @@ public class NodeResourcesTuningTest { assertEquals(402653184/divisor, cfg.documentdb(2).allocation().initialnumdocs()); assertEquals("c", cfg.documentdb(2).inputdoctypename()); } + @Test public void require_that_initial_numdocs_is_dependent_of_mode_and_searchablecopies() { verify_that_initial_numdocs_is_dependent_of_mode(2,0); @@ -145,8 +148,15 @@ public class NodeResourcesTuningTest { @Test public void require_that_summary_cache_max_bytes_is_set_based_on_memory() { - assertEquals(1*GB/20, configFromMemorySetting(1).summary().cache().maxbytes()); - assertEquals(256*GB/20, configFromMemorySetting(256).summary().cache().maxbytes()); + assertEquals(1*GB / 20, configFromMemorySetting(1, false).summary().cache().maxbytes()); + assertEquals(256*GB / 20, configFromMemorySetting(256, false).summary().cache().maxbytes()); + } + + @Test + public void require_that_summary_cache_memory_is_reduced_with_combined_cluster() { + double combinedFactor = 1 - 17.0/100; + assertEquals(combinedFactor * 1*GB / 20, configFromMemorySetting(1, true).summary().cache().maxbytes(), 1000); + assertEquals(combinedFactor * 256*GB / 20, configFromMemorySetting(256, true).summary().cache().maxbytes(), 1000); } @Test @@ -163,12 +173,12 @@ public class NodeResourcesTuningTest { } private static void assertDocumentStoreMaxFileSize(long expFileSizeBytes, int memoryGb) { - assertEquals(expFileSizeBytes, configFromMemorySetting(memoryGb).summary().log().maxfilesize()); + assertEquals(expFileSizeBytes, configFromMemorySetting(memoryGb, false).summary().log().maxfilesize()); } private static void assertFlushStrategyMemory(long expMemoryBytes, int memoryGb) { - assertEquals(expMemoryBytes, configFromMemorySetting(memoryGb).flush().memory().maxmemory()); - assertEquals(expMemoryBytes, configFromMemorySetting(memoryGb).flush().memory().each().maxmemory()); + assertEquals(expMemoryBytes, configFromMemorySetting(memoryGb, false).flush().memory().maxmemory()); + assertEquals(expMemoryBytes, configFromMemorySetting(memoryGb, false).flush().memory().each().maxmemory()); } private static void assertFlushStrategyTlsSize(long expTlsSizeBytes, int diskGb) { @@ -188,56 +198,63 @@ public class NodeResourcesTuningTest { } private static void assertWriteFilter(double expMemoryLimit, int memoryGb) { - assertEquals(expMemoryLimit, configFromMemorySetting(memoryGb).writefilter().memorylimit(), delta); + assertEquals(expMemoryLimit, configFromMemorySetting(memoryGb, false).writefilter().memorylimit(), delta); } private static ProtonConfig configFromDiskSetting(boolean fastDisk) { - return getConfig(new FlavorsConfig.Flavor.Builder(). - fastDisk(fastDisk)); + return getConfig(new FlavorsConfig.Flavor.Builder().fastDisk(fastDisk), false); } private static ProtonConfig configFromDiskSetting(int diskGb) { - return getConfig(new FlavorsConfig.Flavor.Builder(). - minDiskAvailableGb(diskGb)); + return getConfig(new FlavorsConfig.Flavor.Builder().minDiskAvailableGb(diskGb), false); } - private static ProtonConfig configFromMemorySetting(int memoryGb) { - return getConfig(new FlavorsConfig.Flavor.Builder(). - minMainMemoryAvailableGb(memoryGb)); + private static ProtonConfig configFromMemorySetting(int memoryGb, boolean combined) { + return getConfig(new FlavorsConfig.Flavor.Builder().minMainMemoryAvailableGb(memoryGb), combined); } + private static ProtonConfig configFromMemorySetting(int memoryGb, ProtonConfig.Builder builder, int redundancy, int searchableCopies) { - return getConfig(new FlavorsConfig.Flavor.Builder(). - minMainMemoryAvailableGb(memoryGb), builder, redundancy, searchableCopies); + return getConfig(new FlavorsConfig.Flavor.Builder() + .minMainMemoryAvailableGb(memoryGb), builder, redundancy, searchableCopies, false); } private static ProtonConfig configFromNumCoresSetting(double numCores) { - return getConfig(new FlavorsConfig.Flavor.Builder().minCpuCores(numCores)); + return getConfig(new FlavorsConfig.Flavor.Builder().minCpuCores(numCores), false); } private static ProtonConfig configFromNumCoresSetting(double numCores, int numThreadsPerSearch) { - return getConfig(new FlavorsConfig.Flavor.Builder().minCpuCores(numCores), new ProtonConfig.Builder(), 1, 1, numThreadsPerSearch); + return getConfig(new FlavorsConfig.Flavor.Builder().minCpuCores(numCores), + new ProtonConfig.Builder(), 1, 1, numThreadsPerSearch, false); } private static ProtonConfig configFromEnvironmentType(boolean docker) { String environment = (docker ? "DOCKER_CONTAINER" : "undefined"); - return getConfig(new FlavorsConfig.Flavor.Builder().environment(environment)); + return getConfig(new FlavorsConfig.Flavor.Builder().environment(environment), false); } - private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder) { - return getConfig(flavorBuilder, new ProtonConfig.Builder()); + private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, boolean combined) { + return getConfig(flavorBuilder, new ProtonConfig.Builder(), combined); } - private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, ProtonConfig.Builder protonBuilder) { - return getConfig(flavorBuilder, protonBuilder, 1,1); + + private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, + ProtonConfig.Builder protonBuilder, boolean combined) { + return getConfig(flavorBuilder, protonBuilder, 1, 1, combined); } - private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, ProtonConfig.Builder protonBuilder, int redundancy, int searchableCopies) { + + private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, ProtonConfig.Builder protonBuilder, + int redundancy, int searchableCopies, boolean combined) { flavorBuilder.name("my_flavor"); - NodeResourcesTuning tuning = new NodeResourcesTuning(new Flavor(new FlavorsConfig.Flavor(flavorBuilder)).resources(), redundancy, searchableCopies, 1); + NodeResourcesTuning tuning = new NodeResourcesTuning(new Flavor(new FlavorsConfig.Flavor(flavorBuilder)).resources(), + redundancy, searchableCopies, 1, combined); tuning.getConfig(protonBuilder); return new ProtonConfig(protonBuilder); } - private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, ProtonConfig.Builder protonBuilder, int redundancy, int searchableCopies, int numThreadsPerSearch) { + + private static ProtonConfig getConfig(FlavorsConfig.Flavor.Builder flavorBuilder, ProtonConfig.Builder protonBuilder, + int redundancy, int searchableCopies, int numThreadsPerSearch, boolean combined) { flavorBuilder.name("my_flavor"); - NodeResourcesTuning tuning = new NodeResourcesTuning(new Flavor(new FlavorsConfig.Flavor(flavorBuilder)).resources(), redundancy, searchableCopies, numThreadsPerSearch); + NodeResourcesTuning tuning = new NodeResourcesTuning(new Flavor(new FlavorsConfig.Flavor(flavorBuilder)).resources(), + redundancy, searchableCopies, numThreadsPerSearch, combined); tuning.getConfig(protonBuilder); return new ProtonConfig(protonBuilder); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java index 9e26fa9e657..9c69ba8f212 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java @@ -48,14 +48,14 @@ public class SearchNodeTest { } private static SearchNode createSearchNode(AbstractConfigProducer parent, String name, int distributionKey, - NodeSpec nodeSpec, boolean flushOnShutDown, boolean isHosted) { - return SearchNode.create(parent, name, distributionKey, nodeSpec, "mycluster", null, flushOnShutDown, Optional.empty(), Optional.empty(), isHosted); + NodeSpec nodeSpec, boolean flushOnShutDown, boolean isHosted, boolean combined) { + return SearchNode.create(parent, name, distributionKey, nodeSpec, "mycluster", null, flushOnShutDown, Optional.empty(), Optional.empty(), isHosted, combined); } @Test public void requireThatBasedirIsCorrectForElasticMode() { MockRoot root = new MockRoot(""); - SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted()); + SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted(), false); prepare(root, node); assertBaseDir(Defaults.getDefaults().underVespaHome("var/db/vespa/search/cluster.mycluster/n3"), node); } @@ -63,7 +63,7 @@ public class SearchNodeTest { @Test public void requireThatPreShutdownCommandIsEmptyWhenNotActivated() { MockRoot root = new MockRoot(""); - SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted()); + SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted(), false); node.setHostResource(new HostResource(new Host(node, "mynbode"))); node.initService(root.deployLogger()); assertFalse(node.getPreShutdownCommand().isPresent()); @@ -72,7 +72,7 @@ public class SearchNodeTest { @Test public void requireThatPreShutdownCommandUsesPrepareRestartWhenActivated() { MockRoot root = new MockRoot(""); - SearchNode node = createSearchNode(root, "mynode2", 4, new NodeSpec(7, 5), true, root.getDeployState().isHosted()); + SearchNode node = createSearchNode(root, "mynode2", 4, new NodeSpec(7, 5), true, root.getDeployState().isHosted(), false); node.setHostResource(new HostResource(new Host(node, "mynbode2"))); node.initService(root.deployLogger()); assertTrue(node.getPreShutdownCommand().isPresent()); |