33 votes

Réglage du ramasse-miettes dans Ruby 2.0

Je me demandais si le réglage du GC utilisé pour ruby 1.9.x est toujours pertinent dans la version 2.0 avec la nouvelle implémentation du GC. Si oui, y a-t-il de nouvelles choses que nous pouvons configurer sur la nouvelle version?

Je parle des configurations suivantes

 RUBY_HEAP_MIN_SLOTS=600000 
RUBY_GC_MALLOC_LIMIT=59000000
RUBY_HEAP_FREE_MIN=100000
 

51voto

davogones Points 5405

Il y a un peu juste de la confusion au sujet de ces GC paramètres de réglage. REE (qui est un fork de Ruby 1.8.7) introduit ses propres paramètres, et plus tard, Ruby (à partir de la 1.9.2) introduit son propre (même) les paramètres. Ruby 1.9.3 fait d'eux personnalisable via des variables d'environnement, et de Rubis 2.1.0 ajouté beaucoup plus.

Ce blog va dans les détails à propos de la collecte des ordures dans l'IRM et que l'accord des noms de variables.

Voici une liste complète de tous les réglage des variables pour chaque version de Ruby:

REE source

  • 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 source source

(Codé en dur, mais personnalisable via des variables d'environnement avec ce patch)

  • GC_MALLOC_LIMIT
  • HEAP_MIN_SLOTS
  • FREE_MIN

Ruby 1.9.3 source

  • RUBY_GC_MALLOC_LIMIT
  • RUBY_HEAP_MIN_SLOTS
  • RUBY_FREE_MIN

Ruby 2.0.0 source

Même que Ruby 1.9.3

Ruby 2.1.0 source

  • RUBY_GC_HEAP_INIT_SLOTS (obsoletes RUBY_HEAP_MIN_SLOTS)
  • RUBY_GC_HEAP_FREE_SLOTS (obsoletes RUBY_FREE_MIN)
  • RUBY_GC_HEAP_GROWTH_FACTOR (nouveau)
  • RUBY_GC_HEAP_GROWTH_MAX_SLOTS (nouveau)
  • RUBY_GC_MALLOC_LIMIT
  • RUBY_GC_MALLOC_LIMIT_MAX (nouveau)
  • RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR (nouveau)
  • RUBY_GC_OLDMALLOC_LIMIT (nouveau)
  • RUBY_GC_OLDMALLOC_LIMIT_MAX (nouveau)
  • RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR (nouveau)

Ruby 2.1.1 source

  • RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR (nouveau)

14voto

Denji Points 427

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
 

ou ca

 # 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
 

Patch Ruby IRM Performance

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X