diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-08-05 13:10:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-05 13:10:47 +0200 |
commit | 35283b454dfdaa9acbcea24274e01e65d128b7b6 (patch) | |
tree | 44419bfa32d097da8651c5d66ebe873ca994dc90 | |
parent | 17f7d93b65dd1705be9c34026ba5505ca5d278fb (diff) | |
parent | 6e3b9c16fd2925ac0385606450378dbb19db2e25 (diff) |
Merge pull request #10025 from vespa-engine/geirst/improve-content-node-tuning
Reserve 1GB of memory for other processes running on the content nodeā¦
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java | 9 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java | 22 |
2 files changed, 27 insertions, 4 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java index ea28809b289..3260cf3a680 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java @@ -36,6 +36,7 @@ public class NodeFlavorTuning implements ProtonConfig.Producer { tuneSummaryReadIo(builder.summary.read); tuneSummaryCache(builder.summary.cache); tuneSearchReadIo(builder.search.mmap); + tuneWriteFilter(builder.writefilter); for (ProtonConfig.Documentdb.Builder dbb : builder.documentdb) { getConfig(dbb); } @@ -104,4 +105,12 @@ public class NodeFlavorTuning implements ProtonConfig.Producer { } } + private void tuneWriteFilter(ProtonConfig.Writefilter.Builder builder) { + // "Reserve" 1GB of memory for other processes running on the content node (config-proxy, cluster-controller, metrics-proxy) + double reservedMemoryGb = 1; + double defaultMemoryLimit = new ProtonConfig.Writefilter(new ProtonConfig.Writefilter.Builder()).memorylimit(); + double scaledMemoryLimit = ((nodeFlavor.getMinMainMemoryAvailableGb() - reservedMemoryGb) * defaultMemoryLimit) / nodeFlavor.getMinMainMemoryAvailableGb(); + builder.memorylimit(scaledMemoryLimit); + } + } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java index b0897c963c0..a4b414ba0da 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java @@ -19,6 +19,8 @@ import static com.yahoo.vespa.model.search.NodeFlavorTuning.GB; */ public class NodeFlavorTuningTest { + private static double delta = 0.00001; + @Test public void require_that_hwinfo_disk_size_is_set() { ProtonConfig cfg = configFromDiskSetting(100); @@ -69,15 +71,15 @@ public class NodeFlavorTuningTest { @Test public void require_that_fast_disk_is_reflected_in_proton_config() { ProtonConfig cfg = configFromDiskSetting(true); - assertEquals(200, cfg.hwinfo().disk().writespeed(), 0.001); - assertEquals(100, cfg.hwinfo().disk().slowwritespeedlimit(), 0.001); + assertEquals(200, cfg.hwinfo().disk().writespeed(), delta); + assertEquals(100, cfg.hwinfo().disk().slowwritespeedlimit(), delta); } @Test public void require_that_slow_disk_is_reflected_in_proton_config() { ProtonConfig cfg = configFromDiskSetting(false); - assertEquals(40, cfg.hwinfo().disk().writespeed(), 0.001); - assertEquals(100, cfg.hwinfo().disk().slowwritespeedlimit(), 0.001); + assertEquals(40, cfg.hwinfo().disk().writespeed(), delta); + assertEquals(100, cfg.hwinfo().disk().slowwritespeedlimit(), delta); } @Test @@ -137,6 +139,14 @@ public class NodeFlavorTuningTest { assertSharedDisk(false, false); } + @Test + public void require_that_write_filter_memory_limit_is_scaled() { + assertWriteFilter(0.7, 8); + assertWriteFilter(0.75, 16); + assertWriteFilter(0.775, 32); + assertWriteFilter(0.7875, 64); + } + private static void assertDocumentStoreMaxFileSize(long expFileSizeBytes, int memoryGb) { assertEquals(expFileSizeBytes, configFromMemorySetting(memoryGb).summary().log().maxfilesize()); } @@ -162,6 +172,10 @@ public class NodeFlavorTuningTest { assertEquals(sharedDisk, configFromEnvironmentType(docker).hwinfo().disk().shared()); } + private static void assertWriteFilter(double expMemoryLimit, int memoryGb) { + assertEquals(expMemoryLimit, configFromMemorySetting(memoryGb).writefilter().memorylimit(), delta); + } + private static ProtonConfig configFromDiskSetting(boolean fastDisk) { return getConfig(new FlavorsConfig.Flavor.Builder(). fastDisk(fastDisk)); |