From: "peterzhu2118 (Peter Zhu)" Date: 2021-11-27T19:45:41+00:00 Subject: [ruby-core:106298] [Ruby master Feature#18364] Add GC.stat_size_pool for Variable Width Allocation Issue #18364 has been updated by peterzhu2118 (Peter Zhu). Thanks for the TruffleRuby and JRuby info @eregon! Maybe we could extend `GC.stat` to include size pool info in an array. For example: ``` pp GC.stat {:count=>21, :heap_allocated_pages=>99, ... :size_pools=> [ {:slot_size=>40, :heap_allocatable_pages=>4, :heap_eden_pages=>40, :heap_eden_slots=>1234, :heap_tomb_pages=>0, :heap_tomb_slots=>0}, {:slot_size=>80, :heap_allocatable_pages=>80, :heap_eden_pages=>14, :heap_eden_slots=>123, :heap_tomb_pages=>0, :heap_tomb_slots=>0} ... ], ... } ``` However, I think I think that this would be a breaking change for those that assume all the values in the hash are of type Numeric. ---------------------------------------- Feature #18364: Add GC.stat_size_pool for Variable Width Allocation https://bugs.ruby-lang.org/issues/18364#change-94924 * Author: peterzhu2118 (Peter Zhu) * Status: Open * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) ---------------------------------------- # GitHub PR: https://github.com/ruby/ruby/pull/5177 We're proposing an API to get statistics for size pools for Variable Width Allocation similar to `GC.stat`. This will make it easier for us (and other developers) to tune VWA. Before 3.1 release, we plan to keep this method hidden from the documentation using `:nodoc:` since it is not useful when not using VWA. For example: ```ruby # Get stats for size pool 2 puts GC.stat_size_pool(2) #=> {:slot_size=>160, :heap_allocatable_pages=>80, :heap_eden_pages=>14, :heap_eden_slots=>1424, :heap_tomb_pages=>0, :heap_tomb_slots=>0} puts GC.stat_size_pool(2, :heap_eden_pages) #=> 14 ``` We aim to keep the keys in the outputted hash the same as the keys used in `GC.stat`. We chose to implement a new method instead of re-using an existing API (`GC.stat`) because the keys returned by `GC.stat_size_pool` will not be the same as `GC.stat`. We believe that having `GC.stat` return different shapes of hashes based on its arguments is confusing. -- https://bugs.ruby-lang.org/ Unsubscribe: