aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-09-30 15:22:12 +0200
committerGitHub <noreply@github.com>2020-09-30 15:22:12 +0200
commit48432ae2bf96f10263c5ed9a77c3b1ec2b664da2 (patch)
tree8659dcbcbc292ee6766d027452c3b9352c2f0c9b /vespalib
parent48b87fd2d6d6d3fcf777f5b106988d86d3508d58 (diff)
parent5f41e744749e4808c10526cf2f45ba69a1f32e32 (diff)
Merge pull request #14628 from vespa-engine/toregge/reconsider-allocation-stats
Consider a buffer on hold to have zero dead elements
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/datastore/datastore/datastore_test.cpp7
-rw-r--r--vespalib/src/vespa/vespalib/datastore/bufferstate.cpp3
2 files changed, 6 insertions, 4 deletions
diff --git a/vespalib/src/tests/datastore/datastore/datastore_test.cpp b/vespalib/src/tests/datastore/datastore/datastore_test.cpp
index 448df2d24bd..a5bb51e5074 100644
--- a/vespalib/src/tests/datastore/datastore/datastore_test.cpp
+++ b/vespalib/src/tests/datastore/datastore/datastore_test.cpp
@@ -422,7 +422,8 @@ TEST(DataStoreTest, require_that_memory_stats_are_calculated)
s.holdBuffer(r.bufferId());
s.transferHoldLists(100);
m._usedElems += 2;
- m._holdElems += 2; // used - dead
+ m._holdElems = m._usedElems;
+ m._deadElems = 0;
m._activeBuffers--;
m._holdBuffers++;
assertMemStats(m, s.getMemStats());
@@ -474,8 +475,8 @@ TEST(DataStoreTest, require_that_memory_usage_is_calculated)
vespalib::MemoryUsage m = s.getMemoryUsage();
EXPECT_EQ(MyRef::offsetSize() * sizeof(int), m.allocatedBytes());
EXPECT_EQ(5 * sizeof(int), m.usedBytes());
- EXPECT_EQ(2 * sizeof(int), m.deadBytes());
- EXPECT_EQ(3 * sizeof(int), m.allocatedBytesOnHold());
+ EXPECT_EQ(0 * sizeof(int), m.deadBytes());
+ EXPECT_EQ(5 * sizeof(int), m.allocatedBytesOnHold());
s.trimHoldLists(101);
}
diff --git a/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp b/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp
index acebe8d0db6..eb301556c4b 100644
--- a/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp
@@ -137,7 +137,8 @@ BufferState::onHold()
_compacting = false;
assert(_deadElems <= _usedElems);
assert(_holdElems <= (_usedElems - _deadElems));
- _holdElems = _usedElems - _deadElems; // Put everyting not dead on hold
+ _deadElems = 0;
+ _holdElems = _usedElems; // Put everyting on hold
_typeHandler->onHold(&_usedElems);
if (!_freeList.empty()) {
removeFromFreeListList();