Forum: Ruby-core [Feature #2837] Compile-time constant for HEAP_GROWTH_FACTOR (patch attached)

Posted by Michael Edgar (Guest)
on 2010-03-04 21:21
(Received via mailing list)
Feature #2837: Compile-time constant for HEAP_GROWTH_FACTOR (patch 
attached)
http://redmine.ruby-lang.org/issues/show/2837

Author: Michael Edgar
Status: Open, Priority: Normal
Category: core

The GC currently increases the size at which newly-created heaps by a 
factor of 1.8 for each heap.  Some find it appropriate to modify this 
value (REE uses a value of 1 instead of 1.8, for example).  In the trunk 
version of this code, that value is hard-coded in as a constant at 1.8 
in gc.c:980.

I've included a patch to expose this as a compile-time constant 
(HEAP_GROW_FACTOR), and also included getters and setters in the style 
of the patch I submitted in Issue 1047: 
http://redmine.ruby-lang.org/issues/show/1047 .
Posted by Nobuyoshi Nakada (nobu)
on 2010-03-05 05:55
(Received via mailing list)
Hi,

At Fri, 5 Mar 2010 05:20:36 +0900,
Michael Edgar wrote in [ruby-core:28487]:
> I've included a patch to expose this as a compile-time
> constant (HEAP_GROW_FACTOR), and also included getters and
> setters in the style of the patch I submitted in Issue 1047:
> http://redmine.ruby-lang.org/issues/show/1047 .

At least, they must be members of rb_objspace_t, and the
argument ranges should be checked.
Posted by Michael Edgar (Guest)
on 2010-03-05 10:34
(Received via mailing list)
Issue #2837 has been updated by Michael Edgar.


> At least, they must be members of rb_objspace_t, and the
> argument ranges should be checked.

I considered this, though they are compile-time constants that are being 
replaced.  Pre-patch, they aren't currently in the rb_objspace_t.  The 
malloc_limit accessor affects the currently rb_objspace_t as 
appropriate, but the HEAP_MIN_SLOTS accessors don't since that value 
doesn't directly affect existing structures.  I can certainly put a 
heap_min_slots member into rb_objspace_t.

Also, which argument ranges are considered valid? Perhaps a malloc_limit 
of at least 10K? I don't know how small of a footprint Ruby could fit 
into that people would like. While most people increase these values 
beyond their initial defaults, I wouldn't want to set the limit too low.

Thanks!
----------------------------------------
http://redmine.ruby-lang.org/issues/show/2837
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.