diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-12-08 23:49:48 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-12-08 23:49:48 +0100 |
commit | f5b7a486d9907f47c4d3b8cb4fb9514407fe4c30 (patch) | |
tree | dc9d46d67beea35fd13563419811f934331a3c6b /searchlib | |
parent | 2853733d3227818dd83e006e63a3c915679a7b53 (diff) |
Integrate CompactionStrategy with AddressSpace and MemoryUsage.
Diffstat (limited to 'searchlib')
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(); } } |