[#57574] [ruby-trunk - Feature #8976][Open] file-scope freeze_string directive — "akr (Akira Tanaka)" <akr@...>

70 messages 2013/10/02

[#57579] [ruby-trunk - Feature #8977][Open] String#frozen that takes advantage of the deduping — "sam.saffron (Sam Saffron)" <sam.saffron@...>

25 messages 2013/10/02

[#57679] [ruby-trunk - Feature #8987][Open] map/collect extension which handles arguments — "sowieso (So Wieso)" <sowieso@...>

16 messages 2013/10/05

[#57705] [ruby-trunk - Feature #8992][Open] Use String#freeze and compiler tricks to replace "str"f suffix — "headius (Charles Nutter)" <headius@...>

43 messages 2013/10/07

[#57727] [ruby-trunk - Feature #8998][Open] string keys for hash literals should use fstrings — "normalperson (Eric Wong)" <normalperson@...>

17 messages 2013/10/08

[#57771] [ruby-trunk - Bug #9008][Open] TestProcess#test_clock_getres_constants and TestProcess#test_clock_gettime_constants fails on ARM — "vo.x (Vit Ondruch)" <v.ondruch@...>

15 messages 2013/10/09

[#57888] [ruby-trunk - Feature #9025][Open] Clarify the error message when calling a method with the wrong number of arguments — Nerian (Gonzalo Rodríguez) <siotopo@...>

11 messages 2013/10/15

[#57993] [ruby-trunk - Feature #9047][Open] Alternate hash key syntax for symbols — "jamonholmgren (Jamon Holmgren)" <jamon@...>

13 messages 2013/10/23

[#58007] [ruby-trunk - Feature #9049][Open] Shorthands (a:b, *) for inclusive indexing — "mohawkjohn (John Woods)" <john.o.woods@...>

25 messages 2013/10/24

[#58033] [ruby-trunk - Bug #9053][Open] SSL Issue with Ruby 2.0.0 — "tisba (Sebastian Cohnen)" <ruby-lang@...>

16 messages 2013/10/25

[#58080] [ruby-trunk - Feature #9064][Open] Add support for packages, like in Java — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

23 messages 2013/10/30

[ruby-core:57931] [ruby-trunk - Bug #9035] [proposal] new RUBY_GC_HEAP_GROWTH_MAX_OBJ tuning parameter

From: "nobu (Nobuyoshi Nakada)" <nobu@...>
Date: 2013-10-18 05:28:15 UTC
List: ruby-core #57931
Issue #9035 has been updated by nobu (Nobuyoshi Nakada).

Description updated


----------------------------------------
Bug #9035: [proposal] new RUBY_GC_HEAP_GROWTH_MAX_OBJ tuning parameter
https://bugs.ruby-lang.org/issues/9035#change-42514

Author: tmm1 (Aman Gupta)
Status: Open
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


=begin
= Background

Currently, whenever the Ruby GC runs out of object slots the heap is grown by 1.8x (((%GC_HEAP_GROWTH_FACTOR%))).
This works well for small programs, but given a large application it will cause rapid increase in memory.
For example, if a ruby program is using 1 million objects and runs out of slots, it will grow to 1.8 million objects.
This is a huge increase.

= Proposal

Introduce ((%RUBY_GC_HEAP_GROWTH_MAX_OBJ%)) to avoid exponential growth in larger ruby applications.
After this limit is reached, heap growth will happen linearly instead of exponentially.
For example, if ((%growth_max=100k%)) then the application above will grow from 1mm objects to 1.1mm objects.

= Discussion

((%RUBY_GC_HEAP_GROWTH_MAX%)) can be represented either in a) bytesize, or b) number of objects.

Arguments for (a)
  * more user friendly, since users are exposed primarily to RSS and want to control final RSS value
  * a bytesize based formula can include more varibles, for example the size of bitmaps associated with each (({RVALUE}))

Arguments for (b)
  * consistent with existing tuning parameters (all object based, i.e. RUBY_HEAP_MIN_SLOTS)
  * GC tuning already requires measuring "startup objects", "objects per request", so object based is more friendly
  * bytesize is confusing because ((%GROWTH_MAX%)) only controls growth of ruby heap, not total RSS
  * this is an advanced feature meant for use by experts (default value will be 0 = no change from behavior)
    since experts will be using it, we can assume they have already measured the number of objects in their ruby app first
=end



-- 
http://bugs.ruby-lang.org/

In This Thread