开发者

Ruby Garbage Collection Heap Slot size

开发者 https://www.devze.com 2023-01-18 09:34 出处:网络
So, ruby enterprise documentation states that all the values in the GC settings are defined in slots: http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning

So, ruby enterprise documentation states that all the values in the GC settings are defined in slots: http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning

(e.g. RUBY_HEAP_MIN_SLOTS)

We fine-tuned our app's min slot size and increment for the best performance by trial and error (we have enough machines to get a good idea how different values affect the number of malloc calls and Full开发者_运维技巧 GCs).

But something has been bugging me for a while: How big is 1 slot in bytes?


From Ruby source:

 *  sizeof(RVALUE) is
 *  20 if 32-bit, double is 4-byte aligned
 *  24 if 32-bit, double is 8-byte aligned
 *  40 if 64-bit


$ rvm use ruby-1.9.2-p136
$ gdb ruby
(gdb) p sizeof(RVALUE)
$1 = 40


The default in 1.9 is 8K

http://svn.ruby-lang.org/repos/ruby/trunk/gc.c (search for HEAP_SIZE)

Note well that whenever it runs out of space and needs to reallocate, in 1.9 it allocates exponentially more heaps.

In 1.8 it would allocate bigger and bigger heaps.


After diggin' through the code:

1 slot is a size of sizeof(struct RVALUE), which depends on the machine.

0

精彩评论

暂无评论...
验证码 换一张
取 消