ruby performance garbage-collection ruby-2.0

Ajuste de colector de basura en Ruby 2.0



performance garbage-collection (2)

Me preguntaba si el ajuste de GC utilizado para ruby ​​1.9.x sigue siendo relevante en 2.0 con la nueva implementación del GC. Si es así, ¿hay alguna cosa nueva que podamos configurar en la nueva versión?

Estoy hablando de las siguientes configuraciones

RUBY_HEAP_MIN_SLOTS=600000 RUBY_GC_MALLOC_LIMIT=59000000 RUBY_HEAP_FREE_MIN=100000


Hay un poco de confusión sobre estos parámetros de ajuste de GC. REE (que es una bifurcación de Ruby 1.8.7) introdujo primero sus propios parámetros , y luego Ruby (comenzando en 1.9.2) introdujo sus propios parámetros (similares). Ruby 1.9.3 los hizo personalizables a través de variables de entorno, y Ruby 2.1.0 agregó mucho más.

Esta publicación de blog entra en gran detalle sobre la recolección de basura en MRI y lo que significan todas las variables de ajuste.

Aquí hay una lista completa de todas las variables de ajuste para cada versión de Ruby:

Fuente de REE

  • RUBY_HEAP_MIN_SLOTS
  • RUBY_HEAP_SLOTS_INCREMENT
  • RUBY_HEAP_SLOTS_GROWTH_FACTOR
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_FREE_MIN

Fuente de fuente de Ruby 1.9.2

(Codificado, pero personalizable a través de variables de entorno con este parche )

  • GC_MALLOC_LIMIT
  • HEAP_MIN_SLOTS
  • FREE_MIN

Fuente de Ruby 1.9.3

  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_MIN_SLOTS
  • RUBY_FREE_MIN

Fuente de Ruby 2.0.0

Igual que Ruby 1.9.3

Fuente de Ruby 2.1.0

  • RUBY_GC_HEAP_INIT_SLOTS (obsoletas RUBY_HEAP_MIN_SLOTS)
  • RUBY_GC_HEAP_FREE_SLOTS (obsoletas RUBY_FREE_MIN)
  • RUBY_GC_HEAP_GROWTH_FACTOR (nuevo)
  • RUBY_GC_HEAP_GROWTH_MAX_SLOTS (nuevo)
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_GC_MALLOC_LIMIT_MAX (nuevo)
  • RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (nuevo)
  • RUBY_GC_OLDMALLOC_LIMIT (nuevo)
  • RUBY_GC_OLDMALLOC_LIMIT_MAX (nuevo)
  • RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR (nuevo)

Fuente de Ruby 2.1.1

  • RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR (nuevo)

De 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

o esto

# 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

Performance MRI Ruby Patch

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