summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-09-16 11:45:23 +0200
committerGitHub <noreply@github.com>2021-09-16 11:45:23 +0200
commitb9f2e6894c308c7791540f0d0c593593b334e805 (patch)
treefbff1d6119aea4f87154352ed037886ba1ca9491 /storage
parent34a770f8c6719be221443df88d696f427da33a38 (diff)
parente71201912bfde5477861f6b69bad783e2705fab4 (diff)
Merge pull request #19162 from vespa-engine/geirst/flip-to-new-distributor-stripe-code-path
Flip to always use the new distributor stripe code path.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/common/bucket_stripe_utils_test.cpp13
-rw-r--r--storage/src/vespa/storage/common/bucket_stripe_utils.cpp17
-rw-r--r--storage/src/vespa/storage/common/bucket_stripe_utils.h5
3 files changed, 33 insertions, 2 deletions
diff --git a/storage/src/tests/common/bucket_stripe_utils_test.cpp b/storage/src/tests/common/bucket_stripe_utils_test.cpp
index a654c4fe83e..23f00856a30 100644
--- a/storage/src/tests/common/bucket_stripe_utils_test.cpp
+++ b/storage/src/tests/common/bucket_stripe_utils_test.cpp
@@ -5,9 +5,10 @@
#include <vespa/vespalib/gtest/gtest.h>
using document::BucketId;
+using storage::adjusted_num_stripes;
using storage::calc_num_stripe_bits;
using storage::stripe_of_bucket_key;
-using storage::adjusted_num_stripes;
+using storage::tune_num_stripes_based_on_cpu_cores;
constexpr uint8_t MUB = storage::spi::BucketLimits::MinUsedBits;
TEST(BucketStripeUtilsTest, stripe_of_bucket_key)
@@ -47,3 +48,13 @@ TEST(BucketStripeUtilsTest, max_stripe_values)
EXPECT_EQ(256, storage::MaxStripes);
}
+TEST(BucketStripeUtilsTest, num_stripes_tuned_based_on_cpu_cores)
+{
+ EXPECT_EQ(1, tune_num_stripes_based_on_cpu_cores(0));
+ EXPECT_EQ(1, tune_num_stripes_based_on_cpu_cores(1));
+ EXPECT_EQ(1, tune_num_stripes_based_on_cpu_cores(16));
+ EXPECT_EQ(2, tune_num_stripes_based_on_cpu_cores(17));
+ EXPECT_EQ(2, tune_num_stripes_based_on_cpu_cores(64));
+ EXPECT_EQ(4, tune_num_stripes_based_on_cpu_cores(65));
+}
+
diff --git a/storage/src/vespa/storage/common/bucket_stripe_utils.cpp b/storage/src/vespa/storage/common/bucket_stripe_utils.cpp
index 10667e79678..6f347a827c3 100644
--- a/storage/src/vespa/storage/common/bucket_stripe_utils.cpp
+++ b/storage/src/vespa/storage/common/bucket_stripe_utils.cpp
@@ -39,7 +39,8 @@ calc_num_stripe_bits(uint32_t n_stripes) noexcept
return result;
}
-uint32_t adjusted_num_stripes(uint32_t n_stripes) noexcept
+uint32_t
+adjusted_num_stripes(uint32_t n_stripes) noexcept
{
if (n_stripes > 1) {
if (n_stripes > MaxStripes) {
@@ -50,4 +51,18 @@ uint32_t adjusted_num_stripes(uint32_t n_stripes) noexcept
return n_stripes;
}
+uint32_t
+tune_num_stripes_based_on_cpu_cores(uint32_t cpu_cores) noexcept
+{
+ // This should match the calculation used when node flavor is available:
+ // config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
+ if (cpu_cores <= 16) {
+ return 1;
+ } else if (cpu_cores <= 64) {
+ return 2;
+ } else {
+ return 4;
+ }
+}
+
}
diff --git a/storage/src/vespa/storage/common/bucket_stripe_utils.h b/storage/src/vespa/storage/common/bucket_stripe_utils.h
index 96f1247a09f..8a5886d554a 100644
--- a/storage/src/vespa/storage/common/bucket_stripe_utils.h
+++ b/storage/src/vespa/storage/common/bucket_stripe_utils.h
@@ -31,5 +31,10 @@ uint8_t calc_num_stripe_bits(uint32_t n_stripes) noexcept;
*/
[[nodiscard]] uint32_t adjusted_num_stripes(uint32_t n_stripes) noexcept;
+/**
+ * Tune the number of stripes based on the number of CPU cores.
+ */
+uint32_t tune_num_stripes_based_on_cpu_cores(uint32_t cpu_cores) noexcept;
+
}