Настройка сборщика мусора в Ruby 2.0

мне было интересно, используется ли настройка GC для ruby 1.9.x по-прежнему актуален в 2.0 с новой реализацией GC. Если да, то есть ли какие-либо новые вещи, которые мы можем настроить в новой версии?

Я говорю о следующих настроек

RUBY_HEAP_MIN_SLOTS=600000 
RUBY_GC_MALLOC_LIMIT=59000000
RUBY_HEAP_FREE_MIN=100000

2 ответов


существует большая путаница в отношении этих параметров настройки GC. Ри (который является вилкой Ruby 1.8.7) сначала ввел свои собственные параметры, а позже Ruby (начиная с 1.9.2) ввел свои собственные (аналогичные) параметры. Ruby 1.9.3 сделал их настраиваемыми с помощью переменных среды, а Ruby 2.1.0 добавил намного больше.

этот блог подробно рассказывает о сборе мусора в МРТ и о том, что все переменные настройки означать.

вот полный список всех параметров для каждой версии Ruby:

РЭС источник

  • RUBY_HEAP_MIN_SLOTS
  • RUBY_HEAP_SLOTS_INCREMENT
  • RUBY_HEAP_SLOTS_GROWTH_FACTOR
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_FREE_MIN

Руби 1.9.2 источник источник

(жестко закодированный, но настраиваемый через переменные среды с этот патч)

  • GC_MALLOC_LIMIT
  • HEAP_MIN_SLOTS
  • FREE_MIN

Руби 1.9.3 источник

  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_MIN_SLOTS
  • RUBY_FREE_MIN

Руби 2.0.0 источник

то же, что и Ruby 1.9.3

в Ruby 2.1.0 источник

  • RUBY_GC_HEAP_INIT_SLOTS (obsoletes RUBY_HEAP_MIN_SLOTS)
  • RUBY_GC_HEAP_FREE_SLOTS (obsoletes RUBY_FREE_MIN)
  • RUBY_GC_HEAP_GROWTH_FACTOR (new)
  • RUBY_GC_HEAP_GROWTH_MAX_SLOTS (new)
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_GC_MALLOC_LIMIT_MAX (новый)
  • RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (new)
  • RUBY_GC_OLDMALLOC_LIMIT (new)
  • RUBY_GC_OLDMALLOC_LIMIT_MAX (новый)
  • RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR (new)

Руби 2.1.1 источник

  • RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR (new)

Из Ruby 2.1.x http://tmm1.net/ruby21-rgengc/

export RUBY_GC_HEAP_INIT_SLOTS=600000
export RUBY_GC_HEAP_FREE_SLOTS=600000
export RUBY_GC_HEAP_GROWTH_FACTOR=1.25
export RUBY_GC_HEAP_GROWTH_MAX_SLOTS=300000

или это

# Boost Ruby
export RUBY_GC_HEAP_INIT_SLOTS=1000000 # 1M
export RUBY_GC_HEAP_FREE_SLOTS=500000  # 0.5M
export RUBY_GC_HEAP_GROWTH_FACTOR=1.1
export RUBY_GC_HEAP_GROWTH_MAX_SLOTS=10000000 # 10M
export RUBY_GC_MALLOC_LIMIT_MAX=1000000000    # 1G
export RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR=1.1
# export RUBY_GC_OLDMALLOC_LIMIT=500000000      # 500M
# export RUBY_GC_OLDMALLOC_LIMIT_MAX=1000000000 # 1G
# export RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR=1.1

производительность МРТ Ruby Patch

$ rvm install 2.1.2 --patch railsexpress -n railsexpress
$ rvm --default use 2.1.2-railsexpress