[#106355] [Ruby master Bug#18373] RBS build failure: '/include/x86_64-linux/ruby/config.h', needed by 'constants.o'. — "vo.x (Vit Ondruch)" <noreply@...>
Issue #18373 has been reported by vo.x (Vit Ondruch).
28 messages
2021/12/01
[ruby-core:106646] [Ruby master Feature#18364] Add GC.stat_pool for Variable Width Allocation
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2021-12-13 21:56:46 UTC
List:
ruby-core #106646
Issue #18364 has been updated by Eregon (Benoit Daloze).
peterzhu2118 (Peter Zhu) wrote in #note-10:
> Thank you for the summary @mame! We'll extend `GC.stat` to return a nested data structure.
This seems incompatible and might break existing code which expects `GC.stat` to return a `Hash[Symbol,Integer]`.
Also what should `size_t rb_gc_stat(VALUE)` return/raise for such a case?
Also it's likely to make `GC.stat()`/`GC.stat(hash)` slower and use more allocations, which seems suboptimal.
Notably, `GC.stat(hash)` no longer avoids allocations and becomes useless.
I don't understand @matz's reasoning here, the OP and myself agreed `GC.stat_pool` is best and it covers both the VWA use-case and JRuby/TruffleRuby.
The nested approach seems to have multiple issues, and a key like `size_heap` seems too specific (those details might change over time) and makes no sense for other Ruby implementations.
Maybe it was missed in #4 that it's the result of `GC.heap_stats` on TruffleRuby, *not* of `GC.stat`?
"memory pool" is a well established term in this area.
Another method name is `stat_heap` if that sounds clearer.
----------------------------------------
Feature #18364: Add GC.stat_pool for Variable Width Allocation
https://bugs.ruby-lang.org/issues/18364#change-95317
* 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_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_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_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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>