aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-05-24 09:07:00 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-05-24 09:07:00 +0000
commit7aef2017e0af21f9b0f1290f2299bcb39319a384 (patch)
tree763b597f3ad7b4e435f837e6e54ff4b3f9308dcd /searchcore
parentf3c40af9152d7c6eb9616073626551cef258a52d (diff)
- Introduce the concept of minimal capacity for rcu vectors.
- This is to prevent shrinking down past what has been configured in proton.documentdb[].allocation.initialnumdocs - shrinking down past the configured value is not supported as that would counter the preallocation done to prevent resizing.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp2
-rw-r--r--searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp2
4 files changed, 12 insertions, 8 deletions
diff --git a/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp b/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp
index 59503464222..a27c66cfaa2 100644
--- a/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp
+++ b/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp
@@ -15,7 +15,7 @@ namespace {
CompactionStrategy baseline_compaction_strategy(0.2, 0.25);
GrowStrategy make_grow_strategy(uint32_t initial_docs) {
- return GrowStrategy(initial_docs, 0.1, 1, 0.15);
+ return GrowStrategy(initial_docs, 0.1, 1, initial_docs, 0.15);
}
AllocStrategy make_alloc_strategy(uint32_t initial_docs) {
diff --git a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
index 4022bd68c92..f6c1518ba90 100644
--- a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
+++ b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
@@ -404,6 +404,10 @@ TEST_FF("require that docstore config computes cachesize automatically if unset"
EXPECT_EQUAL(500000ul, config->getStoreConfig().getMaxCacheBytes());
}
+GrowStrategy
+growStrategy(uint32_t initial) {
+ return GrowStrategy(initial, 0.1, 1, initial, 0.15);
+}
TEST_FF("require that allocation config is propagated",
ConfigTestFixture("test"),
DocumentDBConfigManager(f1.configId + "/test", "test"))
@@ -424,9 +428,9 @@ TEST_FF("require that allocation config is propagated",
auto config = getDocumentDBConfig(f1, f2);
{
auto& alloc_config = config->get_alloc_config();
- EXPECT_EQUAL(AllocStrategy(GrowStrategy(20000000, 0.1, 1, 0.15), CompactionStrategy(0.25, 0.3), 10000), alloc_config.make_alloc_strategy(SubDbType::READY));
- EXPECT_EQUAL(AllocStrategy(GrowStrategy(100000, 0.1, 1, 0.15), CompactionStrategy(0.25, 0.3), 10000), alloc_config.make_alloc_strategy(SubDbType::REMOVED));
- EXPECT_EQUAL(AllocStrategy(GrowStrategy(30000000, 0.1, 1, 0.15), CompactionStrategy(0.25, 0.3), 10000), alloc_config.make_alloc_strategy(SubDbType::NOTREADY));
+ EXPECT_EQUAL(AllocStrategy(growStrategy(20000000), CompactionStrategy(0.25, 0.3), 10000), alloc_config.make_alloc_strategy(SubDbType::READY));
+ EXPECT_EQUAL(AllocStrategy(growStrategy(100000), CompactionStrategy(0.25, 0.3), 10000), alloc_config.make_alloc_strategy(SubDbType::REMOVED));
+ EXPECT_EQUAL(AllocStrategy(growStrategy(30000000), CompactionStrategy(0.25, 0.3), 10000), alloc_config.make_alloc_strategy(SubDbType::NOTREADY));
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp b/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp
index 2eb365e245c..8525b0ea779 100644
--- a/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp
@@ -30,8 +30,8 @@ AllocConfig::operator==(const AllocConfig &rhs) const noexcept
AllocStrategy
AllocConfig::make_alloc_strategy(SubDbType sub_db_type) const
{
- auto &baseline_grow_strategy = _alloc_strategy.get_grow_strategy();
- size_t initial_capacity = baseline_grow_strategy.getDocsInitialCapacity();
+ auto &baseline = _alloc_strategy.get_grow_strategy();
+ size_t initial_capacity = baseline.getDocsInitialCapacity();
switch (sub_db_type) {
case SubDbType::READY:
initial_capacity *= _searchable_copies;
@@ -44,7 +44,7 @@ AllocConfig::make_alloc_strategy(SubDbType sub_db_type) const
initial_capacity = std::max(1024ul, initial_capacity / 100);
break;
}
- GrowStrategy grow_strategy(initial_capacity, baseline_grow_strategy.getDocsGrowFactor(), baseline_grow_strategy.getDocsGrowDelta(), baseline_grow_strategy.getMultiValueAllocGrowFactor());
+ GrowStrategy grow_strategy(initial_capacity, baseline.getDocsGrowFactor(), baseline.getDocsGrowDelta(), initial_capacity, baseline.getMultiValueAllocGrowFactor());
return AllocStrategy(grow_strategy, _alloc_strategy.get_compaction_strategy(), _alloc_strategy.get_amortize_count());
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
index 64c1a9c58a7..1aadc845744 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
@@ -254,7 +254,7 @@ build_alloc_config(const ProtonConfig& proton_config, const vespalib::string& do
auto& document_db_config_entry = find_document_db_config_entry(proton_config.documentdb, doc_type_name);
auto& alloc_config = document_db_config_entry.allocation;
auto& distribution_config = proton_config.distribution;
- search::GrowStrategy grow_strategy(alloc_config.initialnumdocs, alloc_config.growfactor, alloc_config.growbias, alloc_config.multivaluegrowfactor);
+ search::GrowStrategy grow_strategy(alloc_config.initialnumdocs, alloc_config.growfactor, alloc_config.growbias, alloc_config.initialnumdocs, alloc_config.multivaluegrowfactor);
CompactionStrategy compaction_strategy(alloc_config.maxDeadBytesRatio, alloc_config.maxDeadAddressSpaceRatio, alloc_config.maxCompactBuffers, alloc_config.activeBuffersRatio);
return AllocConfig(AllocStrategy(grow_strategy, compaction_strategy, alloc_config.amortizecount),
distribution_config.redundancy, distribution_config.searchablecopies);