diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-03-14 06:35:00 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-03-14 06:35:00 +0000 |
commit | 9e47e7ab0d3f88a4657ac86bb68b364ee227a843 (patch) | |
tree | c7442f31c9be219edcdfae4c20b9d81384981876 /searchlib | |
parent | bccf4389dd29f34c26be1c6c1387096321d79323 (diff) |
Track memory usage of LogDataStore
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp | 8 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/docstore/logdatastore.cpp | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp index 580fd199806..ba7508f9b60 100644 --- a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp +++ b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp @@ -1010,6 +1010,14 @@ TEST_F("require that lid space can be increased after being compacted and then s TEST_DO(f.assertContent({1,2}, 3)); } +TEST_F("require that there is control of static memory usage", Fixture) +{ + vespalib::MemoryUsage usage = f.store.getMemoryUsage(); + EXPECT_EQUAL(584u, sizeof(LogDataStore)); + EXPECT_EQUAL(2892160u, usage.allocatedBytes()); + EXPECT_EQUAL(262536u, usage.usedBytes()); +} + TEST_F("require that lid space can be shrunk only after read guards are deleted", Fixture) { f.write(1).write(2); diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp index e76caba55a1..d6d43aaf569 100644 --- a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp @@ -1169,6 +1169,14 @@ LogDataStore::getMemoryUsage() const result.merge(fileChunk->getMemoryUsage()); } } + size_t extra_allocated = 0; + extra_allocated += _fileChunks.capacity() * sizeof(FileChunkVector::value_type); + extra_allocated += _holdFileChunks.capacity() * sizeof(uint32_t); + size_t extra_used = 0; + extra_used += _fileChunks.size() * sizeof(FileChunkVector::value_type); + extra_used += _holdFileChunks.size() * sizeof(uint32_t); + result.incAllocatedBytes(extra_allocated); + result.incUsedBytes(extra_used); return result; } |