diff options
author | Geir Storli <geirst@verizonmedia.com> | 2021-09-16 11:45:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-16 11:45:23 +0200 |
commit | b9f2e6894c308c7791540f0d0c593593b334e805 (patch) | |
tree | fbff1d6119aea4f87154352ed037886ba1ca9491 /storage | |
parent | 34a770f8c6719be221443df88d696f427da33a38 (diff) | |
parent | e71201912bfde5477861f6b69bad783e2705fab4 (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')
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; + } |