web-dev-qa-db-ja.com

ガベージコレクターのチューニングRuby 2.0

Ruby 1.9.xに使用されるGCチューニングは、2.0でもGCの新しい実装に関連しているかどうか疑問に思いました。もしそうなら、新しいものに構成できる新しいものはありますか?バージョン?

私は次の設定について話している

Ruby_HEAP_MIN_SLOTS=600000 
Ruby_GC_MALLOC_LIMIT=59000000
Ruby_HEAP_FREE_MIN=100000
33

これらのGCチューニングパラメータについてはかなり混乱があります。 REE(Ruby 1.8.7)のフォークです) 最初に独自のパラメーターを導入しました 、その後Ruby(1.9以降.2)独自の(同様の)パラメーターを導入しました。Ruby 1.9.3は環境変数を介してそれらをカスタマイズ可能にし、Ruby 2.1.0はさらに多くを追加しました。

このブログ投稿 MRIでのガベージコレクションと、すべての調整変数の意味について詳しく説明します。

各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

ルビー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(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(新規)
51
davogones

From 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

パフォーマンスMRI Rubyパッチ

$ rvm install 2.1.2 --patch railsexpress -n railsexpress
$ rvm --default use 2.1.2-railsexpress
14
Denis Denisov