aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-12-09 17:00:31 +0100
committerGitHub <noreply@github.com>2021-12-09 17:00:31 +0100
commit758b2f5281b3a3ac31e4e77fc4f23de240e4fd7c (patch)
treeefc224cdae40a1d33da714a9f0ee7e3e74e7974d /searchlib
parent6d6123d3d5ad8488bd3ac9e51f2281d9c927c2a9 (diff)
parentf5b7a486d9907f47c4d3b8cb4fb9514407fe4c30 (diff)
Merge pull request #20425 from vespa-engine/toregge/add-more-suitable-member-functions-to-compaction-strategy
Integrate CompactionStrategy with AddressSpace and MemoryUsage.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.hpp16
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingstore.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp4
6 files changed, 13 insertions, 38 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.hpp b/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
index c5d377c6b19..ef080775dbc 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
@@ -229,14 +229,8 @@ template <typename EntryT>
std::unique_ptr<IEnumStore::EnumIndexRemapper>
EnumStoreT<EntryT>::consider_compact_values(const CompactionStrategy& compaction_strategy)
{
- size_t used_bytes = _cached_values_memory_usage.usedBytes();
- size_t dead_bytes = _cached_values_memory_usage.deadBytes();
- size_t used_address_space = _cached_values_address_space_usage.used();
- size_t dead_address_space = _cached_values_address_space_usage.dead();
- bool compact_memory = compaction_strategy.should_compact_memory(used_bytes, dead_bytes);
- bool compact_address_space = compaction_strategy.should_compact_address_space(used_address_space, dead_address_space);
- if (compact_memory || compact_address_space) {
- CompactionSpec compaction_spec(compact_memory, compact_address_space);
+ auto compaction_spec = compaction_strategy.should_compact(_cached_values_memory_usage, _cached_values_address_space_usage);
+ if (compaction_spec.compact()) {
return compact_worst_values(compaction_spec, compaction_strategy);
}
return std::unique_ptr<IEnumStore::EnumIndexRemapper>();
@@ -256,14 +250,12 @@ EnumStoreT<EntryT>::consider_compact_dictionary(const CompactionStrategy& compac
if (_dict->has_held_buffers()) {
return false;
}
- if (compaction_strategy.should_compact_memory(_cached_dictionary_btree_usage.usedBytes(),
- _cached_dictionary_btree_usage.deadBytes()))
+ if (compaction_strategy.should_compact_memory(_cached_dictionary_btree_usage))
{
_dict->compact_worst(true, false, compaction_strategy);
return true;
}
- if (compaction_strategy.should_compact_memory(_cached_dictionary_hash_usage.usedBytes(),
- _cached_dictionary_hash_usage.deadBytes()))
+ if (compaction_strategy.should_compact_memory(_cached_dictionary_hash_usage))
{
_dict->compact_worst(false, true, compaction_strategy);
return true;
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp
index b44b2236f8f..19dd4495dc6 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp
@@ -80,14 +80,8 @@ MultiValueMappingBase::updateStat()
bool
MultiValueMappingBase::considerCompact(const CompactionStrategy &compactionStrategy)
{
- size_t usedBytes = _cachedArrayStoreMemoryUsage.usedBytes();
- size_t deadBytes = _cachedArrayStoreMemoryUsage.deadBytes();
- size_t usedArrays = _cachedArrayStoreAddressSpaceUsage.used();
- size_t deadArrays = _cachedArrayStoreAddressSpaceUsage.dead();
- bool compactMemory = compactionStrategy.should_compact_memory(usedBytes, deadBytes);
- bool compactAddressSpace = compactionStrategy.should_compact_address_space(usedArrays, deadArrays);
- if (compactMemory || compactAddressSpace) {
- CompactionSpec compaction_spec(compactMemory, compactAddressSpace);
+ auto compaction_spec = compactionStrategy.should_compact(_cachedArrayStoreMemoryUsage, _cachedArrayStoreAddressSpaceUsage);
+ if (compaction_spec.compact()) {
compactWorst(compaction_spec, compactionStrategy);
return true;
}
diff --git a/searchlib/src/vespa/searchlib/attribute/postingstore.cpp b/searchlib/src/vespa/searchlib/attribute/postingstore.cpp
index 8c4b8a66a7d..55aa1b2490b 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingstore.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postingstore.cpp
@@ -770,7 +770,7 @@ PostingStore<DataT>::consider_compact_worst_btree_nodes(const CompactionStrategy
if (_allocator.getNodeStore().has_held_buffers()) {
return false;
}
- if (compaction_strategy.should_compact_memory(_cached_allocator_memory_usage.usedBytes(), _cached_allocator_memory_usage.deadBytes())) {
+ if (compaction_strategy.should_compact_memory(_cached_allocator_memory_usage)) {
compact_worst_btree_nodes(compaction_strategy);
return true;
}
@@ -784,7 +784,7 @@ PostingStore<DataT>::consider_compact_worst_buffers(const CompactionStrategy& co
if (_store.has_held_buffers()) {
return false;
}
- if (compaction_strategy.should_compact_memory(_cached_store_memory_usage.usedBytes(), _cached_store_memory_usage.deadBytes())) {
+ if (compaction_strategy.should_compact_memory(_cached_store_memory_usage)) {
CompactionSpec compaction_spec(true, false);
compact_worst_buffers(compaction_spec, compaction_strategy);
return true;
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
index 0a84da7c769..4ecac63f9db 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
@@ -292,9 +292,7 @@ ReferenceAttribute::getReference(DocId doc) const
bool
ReferenceAttribute::consider_compact_values(const CompactionStrategy &compactionStrategy)
{
- size_t used_bytes = _cached_unique_store_values_memory_usage.usedBytes();
- size_t dead_bytes = _cached_unique_store_values_memory_usage.deadBytes();
- bool compact_memory = compactionStrategy.should_compact_memory(used_bytes, dead_bytes);
+ bool compact_memory = compactionStrategy.should_compact_memory(_cached_unique_store_values_memory_usage);
if (compact_memory) {
compact_worst_values(compactionStrategy);
return true;
@@ -320,8 +318,7 @@ ReferenceAttribute::consider_compact_dictionary(const CompactionStrategy &compac
if (dictionary.has_held_buffers()) {
return false;
}
- if (compaction_strategy.should_compact_memory(_cached_unique_store_dictionary_memory_usage.usedBytes(),
- _cached_unique_store_dictionary_memory_usage.deadBytes()))
+ if (compaction_strategy.should_compact_memory(_cached_unique_store_dictionary_memory_usage))
{
dictionary.compact_worst(true, true, compaction_strategy);
return true;
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp
index 2c01472a067..185f1038e39 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp
@@ -559,14 +559,8 @@ namespace {
bool
consider_compact_arrays(const CompactionStrategy& compaction_strategy, vespalib::MemoryUsage& memory_usage, vespalib::AddressSpace& address_space_usage, std::function<void(vespalib::datastore::CompactionSpec, const CompactionStrategy&)> compact_arrays)
{
- size_t used_bytes = memory_usage.usedBytes();
- size_t dead_bytes = memory_usage.deadBytes();
- bool compact_memory = compaction_strategy.should_compact_memory(used_bytes, dead_bytes);
- size_t used_address_space = address_space_usage.used();
- size_t dead_address_space = address_space_usage.dead();
- bool compact_address_space = compaction_strategy.should_compact_address_space(used_address_space, dead_address_space);
- if (compact_memory || compact_address_space) {
- vespalib::datastore::CompactionSpec compaction_spec(compact_memory, compact_address_space);
+ auto compaction_spec = compaction_strategy.should_compact(memory_usage, address_space_usage);
+ if (compaction_spec.compact()) {
compact_arrays(compaction_spec, compaction_strategy);
return true;
}
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp
index a19541072da..5bd14d2c234 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp
@@ -89,9 +89,7 @@ TensorAttribute::onCommit()
incGeneration();
if (getFirstUsedGeneration() > _compactGeneration) {
// No data held from previous compact operation
- size_t used = _cached_tensor_store_memory_usage.usedBytes();
- size_t dead = _cached_tensor_store_memory_usage.deadBytes();
- if (getConfig().getCompactionStrategy().should_compact_memory(used, dead)) {
+ if (getConfig().getCompactionStrategy().should_compact_memory(_cached_tensor_store_memory_usage)) {
compactWorst();
}
}