diff options
author | Geir Storli <geirst@vespa.ai> | 2024-04-26 17:00:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-26 17:00:14 +0200 |
commit | 63b2a4f138914dd1b974908305dd0daa9ce4633c (patch) | |
tree | 3fa831123f9581e4be1e818d6a20874e8d261cc6 /searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp | |
parent | 970e8747037a91dad423f073e08be2612bdeb71a (diff) | |
parent | dd097b175f164d93da7765e827bcdd6fa0a006b6 (diff) |
Merge pull request #31061 from vespa-engine/toregge/expose-imported-attributes-in-metrics
Expose imported attributes in metrics.
Diffstat (limited to 'searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp')
-rw-r--r-- | searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp b/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp index e20d02afe50..6762c0516b2 100644 --- a/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp +++ b/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp @@ -3,6 +3,7 @@ #include "bitvector_search_cache.h" #include <vespa/searchlib/common/bitvector.h> #include <vespa/vespalib/stllike/hash_map.hpp> +#include <vespa/vespalib/util/memoryusage.h> #include <mutex> namespace search::attribute { @@ -10,6 +11,7 @@ namespace search::attribute { BitVectorSearchCache::BitVectorSearchCache() : _mutex(), _size(0), + _entries_extra_memory_usage(0), _cache() {} @@ -18,9 +20,19 @@ BitVectorSearchCache::~BitVectorSearchCache() = default; void BitVectorSearchCache::insert(const vespalib::string &term, std::shared_ptr<Entry> entry) { + size_t entry_extra_memory_usage = 0; + if (entry) { + entry_extra_memory_usage = sizeof(Entry); + if (entry->bitVector) { + entry_extra_memory_usage += entry->bitVector->getFileBytes(); + } + } std::unique_lock guard(_mutex); - _cache.insert(std::make_pair(term, std::move(entry))); + auto ins_res = _cache.insert(std::make_pair(term, std::move(entry))); _size.store(_cache.size()); + if (ins_res.second) { + _entries_extra_memory_usage += entry_extra_memory_usage; + } } std::shared_ptr<BitVectorSearchCache::Entry> @@ -36,12 +48,25 @@ BitVectorSearchCache::find(const vespalib::string &term) const return {}; } +vespalib::MemoryUsage +BitVectorSearchCache::get_memory_usage() const +{ + std::lock_guard guard(_mutex); + size_t cache_memory_consumption = _cache.getMemoryConsumption(); + size_t cache_memory_used = _cache.getMemoryUsed(); + size_t self_memory_used = sizeof(BitVectorSearchCache) - sizeof(_cache); + size_t allocated = self_memory_used + cache_memory_consumption + _entries_extra_memory_usage; + size_t used = self_memory_used + cache_memory_used + _entries_extra_memory_usage; + return vespalib::MemoryUsage(allocated, used, 0, 0); +} + void BitVectorSearchCache::clear() { std::unique_lock guard(_mutex); _cache.clear(); _size.store(0ul, std::memory_order_relaxed); + _entries_extra_memory_usage = 0; } } |