Project

General

Profile

Actions

Feature #20408

open

Add heap_live_slots to GC.stat_heap

Added by mk (Matthias Käppler) 7 months ago. Updated 7 months ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:117432]

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].

Actions #1

Updated by mk (Matthias Käppler) 7 months ago

  • Description updated (diff)

Updated by peterzhu2118 (Peter Zhu) 7 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) 7 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

Actions

Also available in: Atom PDF

Like0
Like0Like1Like0