読者です 読者をやめる 読者になる 読者になる

bekkou68の日記

開発しているサービス, IT技術, 英語など。

『Working with Unix Processes』の Processes Are Friendly を読みました

Unix 勉強会

はじめに

Orphaned Processes の続きです。

大事なことのまとめ

Copy-on-Write(以下 CoW)についての説明(Processes Can Fork を読んだときの感想でふれた)。
MRI や Rubinius は CoW をサポートしていない。CoW をサポートするには CoWフレンドリーになるようにメモリ管理をしなければいけない。CoWフレンドリーなのが Ruby EE のメリットの一つ。Ruby 2.0 では CoWフレンドリーなビットマップマーキングを採用した GC が取り込まれる予定だ。

なぜマークアンドスイープは CoWフレンドリーではないのか

マークアンドスイープを採用したGC だと CoWフレンドリーでは無い。なぜなら、同じアドレスを指すプロセスを新しくつくったとしても、オブジェクトを走査してマークするタイミングでオブジェクトに変更がおきて同量のオブジェクトがつくられて、結果的にオブジェクトコピーしてプロセスをつくった場合と同じくらいメモリがつかわれるため。
本文を読んでもわからなかったのでメンバーに教えてもらいました。感謝!

わからなかった単語・熟語

reap a benefit: 恩恵を得る

感想

CoWフレンドリーかどうかに GC のアルゴリズムが関係しているとは思ってなかったので驚きでした。Ruby 2.0 のありがたさの一つがわかりました。