aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp32
-rw-r--r--searchlib/src/vespa/searchlib/docstore/documentstore.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/docstore/visitcache.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/docstore/visitcache.h4
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>;