aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-13 09:05:24 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2022-09-13 09:05:24 +0200
commit7b8b8cb1fd35ac961ec8a28daf5746be3202c6f2 (patch)
treefdae6d2e4ad69bf1602de414dda91275f79d5b03 /config-model
parentcf494ca75f3dc3bd66ef90a8438a20a5dd447452 (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.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java6
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());
}