

Incremental GC in Ruby MRI - mikkelewis
https://bugs.ruby-lang.org/issues/10137

======
tcopeland
If you're running Ruby 1.9.3, go upgrade to 2.1.2. It is such an improvement
all around - deploy time, restart time, test time, console startup (if you're
using Rails), etc. Just a whole different experience.

And if you've done a 1.8.7 to 1.9.3 upgrade, going from 1.9 to 2.1 is nothing.
Piece of cake by comparison.

~~~
jerhinesmith
If you're on heroku (or similarly memory-constrained VPS), it's worth noting
that 2.1+ _can_ use significantly more memory.

I've been collecting bookmarks on how to properly tune the GC environment
variables in these situations -- hopefully they'll help someone else:

Heroku discussion: [https://discussion.heroku.com/t/tuning-rgengc-2-1-on-
heroku/...](https://discussion.heroku.com/t/tuning-rgengc-2-1-on-heroku/359/6)

Using Out-of-band GC on 2.1:
[http://tmm1.net/ruby21-oobgc/](http://tmm1.net/ruby21-oobgc/)

~~~
timr
Maybe this will help someone, as well...we've been trying to collect all of
the different tuning and implementation information on the Ruby GC in one
place:

[https://www.omniref.com/ruby/2.1.2/symbols/GC#annotation=88&...](https://www.omniref.com/ruby/2.1.2/symbols/GC#annotation=88&line=1)

~~~
jerhinesmith
That's actually a huge help. What I've also been looking for (and haven't been
able to find) is a good guide on How to Tune your GC settings. Aman Gupta has
gotten the closest so far* (I think), but I'd really love a step-by-step of
"OK, open your console, run `GC.start`, take note of this property because it
means X and indicates that Y would be a good setting for Z, etc. etc"

* [http://tmm1.net/ruby21-rgengc/](http://tmm1.net/ruby21-rgengc/)

~~~
MrBra
It would be interesting or useful to know more about it, but what I think is
that ideally a right impementation of a GC should not require any tweeks from
the outside... and I am pretty sure you are not going to get any signifcant
performance boost by using different GC values than default.

------
tehprofessor
Ruby 2.1's GC is worlds faster, for most applications-- especially with a
minor amount of tuning. I saw GC time drop from 20ms to under 5ms (using new
relic). Memory usage until GC has gone up a bit though.

I can only hope, and have good reason to after 2.1, that future improvements
are so good.

... Ruby just gets better by the year, I love it!

------
eeeemmm
Why not to let the user decide when he wants to achieve full GC (As Passenger
is doing it between requests) and so avoid the performance regression this
patch brings?

------
ksec
Since 2.1 has made dramatic decrease in GC time, now the largest contribution
on the NewRelic graphs is in Ruby Interpreter itself.

Are there any improvement on that front in Ruby 2.2?

