Feature #2837

Compile-time constant for HEAP_GROWTH_FACTOR (patch attached)

Added by Michael Edgar almost 2 years ago. Updated 10 months ago.

[ruby-core:28487]
Status:Open Start date:03/05/2010
Priority:Normal Due date:
Assignee:- % Done:

0%

Category:core
Target version:2.0.0

Description

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 .

grow_factor.patch (2 kB) Michael Edgar, 03/05/2010 05:20 am

History

Updated by Nobuyoshi Nakada almost 2 years ago

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.

-- 
Nobu Nakada

Updated by Michael Edgar almost 2 years ago

> 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!

Updated by Kazuhiro NISHIYAMA almost 2 years ago

  • Target version set to 2.0.0

Also available in: Atom PDF