Issue #19785 has been updated by peterzhu2118 (Peter Zhu).
How to know %d part?
The `%d` part is the sizes returned from `GC.stat_heap`. On 64-bit systems, it's 40,
80, 160, 320, 640. On 32-bit systems it's 20, 40, 80, 160, 320.
How to tune the value?
You use `RUBY_GC_HEAP_INIT_SIZE_40_SLOTS=4000000` to have 4M slots in the 40 byte size
pool, for example.
it seems difficult to set it compare with setting 1
init value.
Yes, it is more difficult than setting one value, but users of this API should be aware of
how the GC internals work if they want to use this.
Another idea is to introduce RUBY_GC_HEAP_INIT_PAGES
for the global page pool.
The idea of `RUBY_GC_HEAP_INIT_SIZE_%d_SLOTS` is to set initial sizes for Rails apps so
the GC doesn't need to warm up. `RUBY_GC_HEAP_INIT_PAGES` will allocate pages to size
pools based on the distribution of objects at boot, and I worry that it will be a
different distribution than serving requests.
----------------------------------------
Feature #19785: Deprecate `RUBY_GC_HEAP_INIT_SLOTS`
https://bugs.ruby-lang.org/issues/19785#change-104221
* Author: peterzhu2118 (Peter Zhu)
* Status: Open
* Priority: Normal
----------------------------------------
GitHub PR:
https://github.com/ruby/ruby/pull/8147
The `RUBY_GC_HEAP_INIT_SLOTS` environment variable is replaced by
`RUBY_GC_HEAP_INIT_SIZE_%d_SLOTS` (introduced in commit
[
3ab3455](https://github.com/ruby/ruby/commit/3ab34551450c7a3a3e1ae0b24bf6b7…),
which allows for more fine-grained tuning of size pools. So it doesn't make
sense to keep the environment variable `RUBY_GC_HEAP_INIT_SLOTS`.
I'm proposing to deprecate `RUBY_GC_HEAP_INIT_SLOTS` and eventually remove it.
--
https://bugs.ruby-lang.org/