Feature #20408
openAdd heap_live_slots to GC.stat_heap
Description
GC.stat
exposes a heap_live_slots
metric that returns the number of live objects occupying eden slots.
Because the slot size was fixed to RVALUE_SIZE
, this allowed for some basic approximations of how many bytes were live/in-use (heap_live_slots * RVALUE_SIZE
).
This could furthermore be "embellished" by adding malloc'ed memory for those objects that were larger than a 40B slot (we track this via a custom CRuby patch).
However, with the addition of Variable Width Allocations (https://bugs.ruby-lang.org/issues/18239), this does not work anymore because we don't know how heap_live_slots
distributes over all pools that use different slot sizes.
This could be addressed by also adding heap_live_slots
(and for symmetry: heap_free_slots
) to GC.stat_heap
. The sum of all live slots per pool should equal GC.stat[:heap_live_slots]
.
Updated by peterzhu2118 (Peter Zhu) 8 months ago
Thank you for this ticket. I opened a PR that implements this feature: https://github.com/ruby/ruby/pull/10439
Updated by mk (Matthias Käppler) 8 months ago
peterzhu2118 (Peter Zhu) wrote in #note-2:
Thank you for this ticket. I opened a PR that implements this feature: https://github.com/ruby/ruby/pull/10439
Thank you so much Peter! <3