diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-01-30 23:26:55 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-01-30 23:26:55 +0100 |
commit | 6f1c947bbbbc8f4b0c6b63d564ac2d9294cf13a8 (patch) | |
tree | dfdebb3580c95af2576d49f7cdd6624db478a2e7 /config-model/src | |
parent | 7923c31a91388782f6f6b169358a6cecdf63d2fc (diff) |
Use maxsize-percent for giving percentage.
Diffstat (limited to 'config-model/src')
4 files changed, 26 insertions, 1 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java index 06f4e1cb2e9..d7d9517a98b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java @@ -220,6 +220,8 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui for (Element e : XML.getChildren(spec)) { if (equals("maxsize", e)) { c.maxSize = asLong(e); + } else if (equals("maxsize-percent", e)) { + c.maxSizePercent = asDouble(e); } else if (equals("maxentries", e)) { parent.deployLogger().log(Level.WARNING, "Element 'maxentries is deprecated and ignored. Will only limit by size."); } else if (equals("initialentries", e)) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java index 2c1c5cd83ce..f29c7ade816 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java @@ -243,6 +243,7 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P public static class Component { public Long maxSize = null; + public Double maxSizePercent = null; public Long initialEntries = null; public Compression compression = null; private final boolean outputInt; @@ -257,9 +258,11 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P public void getConfig(ProtonConfig.Summary.Cache.Builder cache) { if (outputInt) { + if (maxSizePercent !=null) cache.maxbytes(-maxSizePercent.longValue()); if (maxSize!=null) cache.maxbytes(maxSize.intValue()); if (initialEntries!=null) cache.initialentries(initialEntries.intValue()); } else { + if (maxSizePercent !=null) cache.maxbytes(-maxSizePercent.longValue()); if (maxSize!=null) cache.maxbytes(maxSize); if (initialEntries!=null) cache.initialentries(initialEntries); } diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc index ffbf1a929bc..a5c75bc0150 100644 --- a/config-model/src/main/resources/schema/content.rnc +++ b/config-model/src/main/resources/schema/content.rnc @@ -337,6 +337,7 @@ Tuning = element tuning { element store { element cache { element maxsize { xsd:nonNegativeInteger }? & + element maxsize-percent { xsd:double { minInclusive = "0.0" maxInclusive = "50.0" } }? & element initialentries { xsd:nonNegativeInteger }? & element maxentries { xsd:nonNegativeInteger }? & TuningCompression? diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java index cbee943172f..a2eccbcb583 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java @@ -3,7 +3,6 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.collections.CollectionUtil; import com.yahoo.config.ConfigInstance; -import com.yahoo.vespa.config.search.core.PartitionsConfig; import com.yahoo.vespa.config.search.core.ProtonConfig; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; import com.yahoo.text.StringUtilities; @@ -176,6 +175,7 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest { "<store>", "<cache>", "<maxsize>128</maxsize>", + "<maxsize-percent>30.7</maxsize-percent>", "<initialentries>64</initialentries>", "<compression>", "<type>none</type>", @@ -199,6 +199,7 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest { assertEquals(Tuning.SearchNode.IoType.DIRECTIO, t.searchNode.summary.io.write); assertEquals(Tuning.SearchNode.IoType.DIRECTIO, t.searchNode.summary.io.read); assertEquals(128, t.searchNode.summary.store.cache.maxSize.longValue()); + assertEquals(30.7, t.searchNode.summary.store.cache.maxSizePercent.doubleValue(), DELTA); assertEquals(Tuning.SearchNode.Summary.Store.Compression.Type.NONE, t.searchNode.summary.store.cache.compression.type); assertEquals(3, t.searchNode.summary.store.cache.compression.level.intValue()); @@ -224,6 +225,24 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest { } @Test + public void requireThatWeCanGiveSummaryCacheSizeInPercentage() { + Tuning t = createTuning(parseXml("<summary>", + "<store>", + "<cache>", + "<maxsize-percent>30.7</maxsize-percent>", + "</cache>", + "</store>", + "</summary>")); + + assertNull(t.searchNode.summary.store.cache.maxSize); + assertEquals(30.7, t.searchNode.summary.store.cache.maxSizePercent.doubleValue(),DELTA); + + String cfg = getProtonCfg(t); + assertThat(cfg, containsString("summary.cache.maxbytes -30")); + } + + + @Test public void requireThatWeCanParseInitializeTag() { Tuning t = createTuning(parseXml("<initialize>", "<threads>7</threads>", |