BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Ruby 1.9.3 Preview 1がリリース。Lazy Sweep GCにより、GCの停止時間が改善。

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

原文(投稿日: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にとどまる理由がありますか?

この記事に星をつける

おすすめ度
スタイル

BT