diff options
Diffstat (limited to 'searchlib')
4 files changed, 33 insertions, 14 deletions
diff --git a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp index 687f3624b44..c496472bdfa 100644 --- a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp +++ b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp @@ -497,20 +497,20 @@ private: } bool allowVisitCaching() const override { return _allowVisitCaching; } private: - VisitCacheStore &_vcs; - vespalib::hash_set<uint32_t> _expected; - vespalib::hash_set<uint32_t> _actual; - bool _allowVisitCaching; + VisitCacheStore &_vcs; + vespalib::hash_set<uint32_t> _expected; + vespalib::hash_set<uint32_t> _actual; + bool _allowVisitCaching; }; - DirectoryHandler _myDir; - document::DocumentTypeRepo _repo; - LogDocumentStore::Config _config; - DummyFileHeaderContext _fileHeaderContext; - vespalib::ThreadStackExecutor _executor; - MyTlSyncer _tlSyncer; + DirectoryHandler _myDir; + document::DocumentTypeRepo _repo; + LogDocumentStore::Config _config; + DummyFileHeaderContext _fileHeaderContext; + vespalib::ThreadStackExecutor _executor; + MyTlSyncer _tlSyncer; std::unique_ptr<LogDocumentStore> _datastore; - std::map<uint32_t, Document::UP> _inserted; - SerialNum _serial; + std::map<uint32_t, Document::UP> _inserted; + SerialNum _serial; }; VisitCacheStore::VerifyVisitor::VerifyVisitor(VisitCacheStore & vcs, std::vector<uint32_t> lids, bool allowCaching) @@ -560,6 +560,14 @@ verifyCacheStats(CacheStats cs, size_t hits, size_t misses, size_t elements, siz EXPECT_GREATER_EQUAL(memory_used+20, cs.memory_used); } +TEST("Control static memory usage") { + VisitCacheStore vcs(DocumentStore::Config::UpdateStrategy::UPDATE); + IDocumentStore &ds = vcs.getStore(); + vespalib::MemoryUsage usage = ds.getMemoryUsage(); + EXPECT_EQUAL(74116u, usage.allocatedBytes()); + EXPECT_EQUAL(392u, usage.usedBytes()); +} + TEST("test the update cache strategy") { VisitCacheStore vcs(DocumentStore::Config::UpdateStrategy::UPDATE); IDocumentStore & ds = vcs.getStore(); diff --git a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp index 1e04b7c61db..368dd31678d 100644 --- a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp @@ -428,7 +428,10 @@ DocumentStore::getStorageStats() const vespalib::MemoryUsage DocumentStore::getMemoryUsage() const { - return _backingStore.getMemoryUsage(); + vespalib::MemoryUsage usage = _backingStore.getMemoryUsage(); + usage.merge(_cache->getStaticMemoryUsage()); + usage.merge(_visitCache->getStaticMemoryUsage()); + return usage; } std::vector<DataStoreFileChunkStats> diff --git a/searchlib/src/vespa/searchlib/docstore/visitcache.cpp b/searchlib/src/vespa/searchlib/docstore/visitcache.cpp index 60c08c281df..d7c1a400b1e 100644 --- a/searchlib/src/vespa/searchlib/docstore/visitcache.cpp +++ b/searchlib/src/vespa/searchlib/docstore/visitcache.cpp @@ -259,4 +259,10 @@ VisitCache::Cache::onRemove(const K & key) { _id2KeySet.erase(key.getKeys().front()); } +vespalib::MemoryUsage +VisitCache::Cache::getStaticMemoryUsage() const { + vespalib::MemoryUsage usage = Parent::getStaticMemoryUsage(); + return usage; +} + } diff --git a/searchlib/src/vespa/searchlib/docstore/visitcache.h b/searchlib/src/vespa/searchlib/docstore/visitcache.h index 9a07c0ceab2..baa594b8d28 100644 --- a/searchlib/src/vespa/searchlib/docstore/visitcache.h +++ b/searchlib/src/vespa/searchlib/docstore/visitcache.h @@ -104,6 +104,7 @@ public: void invalidate(uint32_t key) { remove(key); } vespalib::CacheStats getCacheStats() const; + vespalib::MemoryUsage getStaticMemoryUsage() const { return _cache->getStaticMemoryUsage(); } void reconfigure(size_t cacheSize, CompressionConfig compression); private: /** @@ -144,9 +145,10 @@ private: class Cache : public vespalib::cache<CacheParams> { public: Cache(BackingStore & b, size_t maxBytes); - ~Cache(); + ~Cache() override; CompressedBlobSet readSet(const KeySet & keys); void removeKey(uint32_t key); + vespalib::MemoryUsage getStaticMemoryUsage() const override; private: void locateAndInvalidateOtherSubsets(const UniqueLock & cacheGuard, const KeySet & keys); using IdSet = vespalib::hash_set<uint64_t>; |