开发者

Ruby Garbage Collection Heap Slot size

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

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜