diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-01-29 09:33:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-29 09:33:35 +0100 |
commit | 219a3db8bf95bc5a1fa6fb05d72fb5d2b03eba96 (patch) | |
tree | 0f3cb3bafea73213d3abcb1b239615f4b1646d7b /config-model | |
parent | 8a668436d9f014f1d47f6f10546abc9ad82073cc (diff) | |
parent | 6647262e65aac73aa9f383abd8763974f70bd220 (diff) |
Merge pull request #8269 from vespa-engine/balder/tune-warmup
Add support for controlling warmup in tuning section.
Diffstat (limited to 'config-model')
4 files changed, 40 insertions, 2 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 67eafc6569e..eec9151ce0c 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 @@ -187,6 +187,16 @@ public class DomSearchTuningBuilder extends VespaDomBuilder.DomConfigProducerBui io.search = Tuning.SearchNode.IoType.fromString(asString(e2)); } } + } else if (equals("warmup", e)) { + sn.index.warmup = new Tuning.SearchNode.Index.Warmup(); + Tuning.SearchNode.Index.Warmup warmup = sn.index.warmup; + for (Element e2 : XML.getChildren(e)) { + if (equals("time", e2)) { + warmup.time = Double.valueOf(asString(e2)); + } else if (equals("unpack", e2)) { + warmup.unpack = Boolean.valueOf(asString(e2)); + } + } } } } 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 7bac61900d4..e840b47e054 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 @@ -177,14 +177,28 @@ public class Tuning extends AbstractConfigProducer implements PartitionsConfig.P builder.indexing.read.io(ProtonConfig.Indexing.Read.Io.Enum.valueOf(read.name)); } } + } + public static class Warmup implements ProtonConfig.Producer { + public double time = 0; + public boolean unpack = false; + + @Override + public void getConfig(ProtonConfig.Builder builder) { + if (time > 0) { + builder.index.warmup.time(time); + builder.index.warmup.unpack(unpack); + } + } } public Io io; + public Warmup warmup; @Override public void getConfig(ProtonConfig.Builder builder) { if (io != null) io.getConfig(builder); + if (warmup != null) warmup.getConfig(builder); } } diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc index 7848968eece..dfbcfaaac61 100644 --- a/config-model/src/main/resources/schema/content.rnc +++ b/config-model/src/main/resources/schema/content.rnc @@ -318,7 +318,11 @@ Tuning = element tuning { element write { TuningIoOptionsLight }? & element read { TuningIoOptionsLight }? & element search { TuningIoOptionsFull }? - } + }? & + element warmup { + element time { xsd:double { minInclusive = "0.0" } }? & + element unpack { xsd:boolean }? + }? }? & element attribute { element io { 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 f48c24ae123..14c36ef271d 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 @@ -17,6 +17,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; /** * @author geirst @@ -145,13 +146,22 @@ public class DomSearchTuningBuilderTest extends DomBuilderTest { "<write>directio</write>", "<read>normal</read>", "<search>mmap</search>", - "</io>", "</index>")); + "</io>", + "<warmup>" + + "<time>178</time>", + "<unpack>true</unpack>", + "</warmup>", + "</index>")); assertEquals(Tuning.SearchNode.IoType.DIRECTIO, t.searchNode.index.io.write); assertEquals(Tuning.SearchNode.IoType.NORMAL, t.searchNode.index.io.read); assertEquals(Tuning.SearchNode.IoType.MMAP, t.searchNode.index.io.search); + assertEquals(178, t.searchNode.index.warmup.time, DELTA); + assertTrue(t.searchNode.index.warmup.unpack); String cfg = getProtonCfg(t); assertThat(cfg, containsString("indexing.write.io DIRECTIO")); assertThat(cfg, containsString("indexing.read.io NORMAL")); + assertThat(cfg, containsString("index.warmup.time 178")); + assertThat(cfg, containsString("index.warmup.unpack true")); } @Test |