diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-13 09:05:24 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-13 09:05:24 +0200 |
commit | 7b8b8cb1fd35ac961ec8a28daf5746be3202c6f2 (patch) | |
tree | fdae6d2e4ad69bf1602de414dda91275f79d5b03 /config-model | |
parent | cf494ca75f3dc3bd66ef90a8438a20a5dd447452 (diff) |
If there is less than 12G memory, use only single flush thread.
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java | 8 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java index 9b9a525ab29..bc5de959f3f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java @@ -17,6 +17,7 @@ public class NodeResourcesTuning implements ProtonConfig.Producer { private final static double SUMMARY_FILE_SIZE_AS_FRACTION_OF_MEMORY = 0.02; private final static double SUMMARY_CACHE_SIZE_AS_FRACTION_OF_MEMORY = 0.04; private final static double MEMORY_GAIN_AS_FRACTION_OF_MEMORY = 0.08; + private final static double MIN_MEMORY_PER_FLUSH_THREAD_GB = 12.0; private final static double TLS_SIZE_FRACTION = 0.02; final static long MB = 1024 * 1024; public final static long GB = MB * 1024; @@ -45,6 +46,7 @@ public class NodeResourcesTuning implements ProtonConfig.Producer { tuneDocumentStoreMaxFileSize(builder.summary.log); tuneFlushStrategyMemoryLimits(builder.flush.memory); tuneFlushStrategyTlsSize(builder.flush.memory); + tuneFlushConcurrentThreads(builder.flush); tuneSummaryReadIo(builder.summary.read); tuneSummaryCache(builder.summary.cache); tuneSearchReadIo(builder.search.mmap); @@ -90,6 +92,12 @@ public class NodeResourcesTuning implements ProtonConfig.Producer { builder.each.maxmemory(memoryLimitBytes); } + private void tuneFlushConcurrentThreads(ProtonConfig.Flush.Builder builder) { + if (usableMemoryGb() < MIN_MEMORY_PER_FLUSH_THREAD_GB) { + builder.maxconcurrent(1); + } + } + private void tuneFlushStrategyTlsSize(ProtonConfig.Flush.Memory.Builder builder) { long tlsSizeBytes = (long) ((resources.diskGb() * TLS_SIZE_FRACTION) * GB); tlsSizeBytes = max(2*GB, min(tlsSizeBytes, 100 * GB)); 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 fece6ca47e3..861482ab70c 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 @@ -168,6 +168,12 @@ public class NodeResourcesTuningTest { assertSharedDisk(true, true); } + @Test + public void require_that_concurrent_flush_threads_is_1_with_low_memory() { + assertEquals(2, configFromMemorySetting(13, 0).flush().maxconcurrent()); + assertEquals(1, configFromMemorySetting(11, 0).flush().maxconcurrent()); + } + private static void assertDocumentStoreMaxFileSize(long expFileSizeBytes, int wantedMemoryGb) { assertEquals(expFileSizeBytes, configFromMemorySetting(wantedMemoryGb + reservedMemoryGb, 0).summary().log().maxfilesize()); } |