Skip to content

Commit 87dbd48

Browse files
committed
core: Record change in size after defrag
Signed-off-by: Abhijat Malviya <[email protected]>
1 parent db178da commit 87dbd48

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/core/compact_object.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1623,11 +1623,18 @@ MemoryResource* CompactObj::memory_resource() {
16231623
}
16241624

16251625
bool CompactObj::JsonConsT::DefragIfNeeded(PageUsage* page_usage) {
1626-
if (JsonType* old = json_ptr; ShouldDefragment(page_usage)) {
1626+
JsonType* old = json_ptr;
1627+
if (const bool should_defragment = ShouldDefragment(page_usage); should_defragment) {
1628+
const MiMemoryResource* mr = static_cast<MiMemoryResource*>(memory_resource());
1629+
const ssize_t before = mr->used();
16271630
json_ptr = AllocateMR<JsonType>(DeepCopyJSON(old, memory_resource()));
16281631
DeleteMR<JsonType>(old);
1632+
if (const ssize_t delta = mr->used() - before; delta != 0) {
1633+
bytes_used += delta;
1634+
}
16291635
return true;
16301636
}
1637+
16311638
return false;
16321639
}
16331640

src/server/engine_shard.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,14 +268,19 @@ std::optional<CollectedPageStats> EngineShard::DoDefrag(CollectPageStats collect
268268
uint64_t attempts = 0;
269269

270270
PageUsage page_usage{collect_page_stats, threshold};
271+
DbTableStats& table_stats = slice.GetDBTable(defrag_state_.dbid)->stats;
271272
do {
272273
cur = prime_table->Traverse(cur, [&](PrimeIterator it) {
273274
// for each value check whether we should move it because it
274275
// seats on underutilized page of memory, and if so, do it.
275-
bool did = it->second.DefragIfNeeded(&page_usage);
276+
const ssize_t original_size = it->second.MallocUsed();
277+
const bool did = it->second.DefragIfNeeded(&page_usage);
276278
attempts++;
277279
if (did) {
278280
reallocations++;
281+
if (const ssize_t delta = it->second.MallocUsed() - original_size; delta != 0) {
282+
table_stats.AddTypeMemoryUsage(it->second.ObjType(), delta);
283+
}
279284
}
280285
});
281286
traverses_count++;

0 commit comments

Comments
 (0)