File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -1623,11 +1623,19 @@ MemoryResource* CompactObj::memory_resource() {
16231623}
16241624
16251625bool 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+ const ssize_t after = mr->used ();
1633+ if (const ssize_t delta = after - before; delta != 0 ) {
1634+ bytes_used += delta;
1635+ }
16291636 return true ;
16301637 }
1638+
16311639 return false ;
16321640}
16331641
Original file line number Diff line number Diff 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++;
You can’t perform that action at this time.
0 commit comments