Подтвердить что ты не робот

Настройка сборщика мусора в 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
4b9b3361

Ответ 1

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

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

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

REE источник

  • RUBY_HEAP_MIN_SLOTS
  • RUBY_HEAP_SLOTS_INCREMENT
  • RUBY_HEAP_SLOTS_GROWTH_FACTOR
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_FREE_MIN

Ruby 1.9.2 источник источник

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

  • GC_MALLOC_LIMIT
  • HEAP_MIN_SLOTS
  • FREE_MIN

Ruby 1.9.3 источник

  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_MIN_SLOTS
  • RUBY_FREE_MIN

Ruby 2.0.0 источник

То же, что Ruby 1.9.3

Ruby 2.1.0 источник

  • RUBY_GC_HEAP_INIT_SLOTS (устаревает RUBY_HEAP_MIN_SLOTS)
  • RUBY_GC_HEAP_FREE_SLOTS (obsoletes RUBY_FREE_MIN)
  • RUBY_GC_HEAP_GROWTH_FACTOR (новый)
  • RUBY_GC_HEAP_GROWTH_MAX_SLOTS (новый)
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_GC_MALLOC_LIMIT_MAX (новый)
  • RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (новый)
  • RUBY_GC_OLDMALLOC_LIMIT (новый)
  • RUBY_GC_OLDMALLOC_LIMIT_MAX (новый)
  • RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR (новый)

Ruby 2.1.1 источник

  • RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR (новый)

Ответ 2

От 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

Патч с исправлением ошибок в области производительности

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