BT

Ruby 1.9.3 Preview 1がリリース。Lazy Sweep GCにより、GCの停止時間が改善。

| 作者: Werner Schuster , 翻訳者 編集部N 投稿日 2011年8月13日. 推定読書時間: 1分未満 |

原文(投稿日:2011/08/05)へのリンク

Ruby 1.9.3 Preview 1 がリリースされ、APIに追加があったが、GCのアップデート、lazy sweep GC(遅延開放GC)が含まれた。
InfoQは Ruby 1.9.3に lazy sweep GCの変更をコントリビュートした Narihiro Nakamura 氏に話を聞いた。

InfoQ: lazy sweep GC はこれまでのGCとどう違うのですか?

Simple(非遅延) Mark Sweep GCは、マーク付けと開放を自動的に実行します。また全ヒープを開放し、生きている全オブジェクトを freelistにリンクします。
Lazy sweepでは、適当なマークのないオブジェクトを見つけて、オブジェクトの割り当てが開始したらヒープを開放します。

InfoQ: ところで、lazy sweep GCの一番の利点は、停止時間が短いことですよね? すなわち、停止時間は、続行するのに充分なフリースペースを見つける時間に限られるのですよね?

そうです。Lazy sweepはGCのレスポンス時間の改善します。すなわり、最悪ケースの時間が短くなります。しかし、GCの全体的なスループットは落ちます。

私は、 Simple M&S GC と Lazy sweep GCをMRIで、ベンチマークプログラム (http://redmine.ruby-lang.org/attachments/959/bm_gc_fragmentation.rb)を使って比べました。

最大 GC 時間:48.00ms => 28.00ms (58%)
全 GC 時間:0.83ms => 0.92ms (110%)

InfoQ: lazy sweep GCが不利になるのは、どのようなタイプのプログラムの動きなのでしょうか?

もしプログラムが多くの長寿命なオブジェクトを生成すれば、 lazy sweepは、マークのないオブジェクトを見つけ出せないでしょう。その場合、 lazy sweepは、1つのオブジェクトをアロケートするのに長い時間かかります。私は、ほとんどの場合、lazy sweepのパフォーマンスの方が、依然として M&S GCよりもいい、と考えています。

InfoQ: 今後のMRI 1.9.xに向けたGCの開発、あるいは改善のための計画が何か、ありますか?

ええ、私は、MRI用の並行マーキングGCを作成中です。

現在、 RDoc文書('make rdoc'を使って)を生成するのに、私のマシンで約80秒かかります。その時間の30%がGCに費やされています。私は、2コアCPUマシンで、何とかこれをざっと40%改善しました。

私は、RubyConf 2011でこれについて話すつもりです。

lazy sweep GCの実装は Rubyの gc.c にあり、特に lazy_sweep gc_lazy_sweep 関数にある。

Ruby標準ライブラリの変更は、Ruby 1.9.3 Preview 1 Release Notes に記載されている。ライセンスに関係する変更もある。リリースノートによると、「Rubyのライセンスは、 GPLv2 によるデュアルライセンスから 2-clause BSDLによるデュアルライセンスに変更された。」

Ruby 1.9.3もそろそろなので、再び Ruby 1.8.x 対 Ruby 1.9.2の状況を見るべき時である。Rubyをホストする人達は、1.9.xの方向に動いてきている。 Herokuが Cedar stack を導入した。これは彼らのPaaSを動かしている。 Cedarは Ruby 1.9.2版を提供しているが、 1.8.xは提供していない。 Engine Yardの AppCloudは、デフォルトを Ruby 1.9.2にしている

開発者が1.9.xに移行するのを助けるために、もう一つ中間のリリースが以前計画されたが、 Ruby 1.8.8は、キャンセルされた。Ruby 1.8.6 は、特にライブラリで、かなり後に置かれている。例えば RDoc 3はサポートされない。1.8.7ではサポートされている。

1.9.xをサポートするGemsの状況を、 isitruby19.comで見ることができる

1.8.xにとどまる理由がありますか?

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT