aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-03-14 06:35:00 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-03-14 06:35:00 +0000
commit9e47e7ab0d3f88a4657ac86bb68b364ee227a843 (patch)
treec7442f31c9be219edcdfae4c20b9d81384981876 /searchlib
parentbccf4389dd29f34c26be1c6c1387096321d79323 (diff)
Track memory usage of LogDataStore
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/docstore/logdatastore.cpp8
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;
}