summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-12-13 14:32:11 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-12-13 14:32:11 +0100
commit30fb29af138856d26d3f6b88d1eef5ace94587af (patch)
treeb67a025457a5f9cdbdfa541e9d411dd3e445fb01
parent3753569f574b4eec9c868a676dfe539e77929b80 (diff)
Cap total number of search threads to num-cores *4 rounded up to closes multiple of threads-per-search.
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java11
2 files changed, 11 insertions, 2 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 495395db71b..b6a7fb6182e 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
@@ -121,7 +121,7 @@ public class NodeResourcesTuning implements ProtonConfig.Producer {
private void tuneRequestThreads(ProtonConfig.Builder builder) {
int numCores = (int)Math.ceil(resources.vcpu());
- builder.numsearcherthreads(numCores*threadsPerSearch);
+ builder.numsearcherthreads(Math.min(((numCores*4 + threadsPerSearch - 1)/threadsPerSearch)*threadsPerSearch, numCores*threadsPerSearch));
builder.numsummarythreads(numCores);
builder.numthreadspersearch(threadsPerSearch);
}
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 d0fa205237e..a6d44d46dcb 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
@@ -85,7 +85,7 @@ public class NodeResourcesTuningTest {
}
@Test
- void require_that_num_search_threads_and_considers_explict_num_threads_per_search() {
+ void require_that_num_search_threads_considers_explict_num_threads_per_search() {
ProtonConfig cfg = configFromNumCoresSetting(4.5, 3);
assertEquals(15, cfg.numsearcherthreads());
assertEquals(5, cfg.numsummarythreads());
@@ -93,6 +93,15 @@ public class NodeResourcesTuningTest {
}
@Test
+ void require_that_num_search_threads_can_only_have_4x_overcommit_rounded_up_to_num_threads_per_search() {
+ ProtonConfig cfg = configFromNumCoresSetting(9, 8);
+ assertEquals(40, cfg.numsearcherthreads());
+ assertEquals(9, cfg.numsummarythreads());
+ assertEquals(8, cfg.numthreadspersearch());
+ }
+
+
+ @Test
void require_that_fast_disk_is_reflected_in_proton_config() {
ProtonConfig cfg = configFromDiskSetting(true);
assertEquals(200, cfg.hwinfo().disk().writespeed(), delta);