Ruby on Rails

Ruby on Railsの主要開発者であるDavid Heinemeier Hansson氏は16日(米国時間)、RailsコアチームメンバーにJosh Peek氏を正式に迎えいれたことを発表した。Josh Peek氏はこれまでもRailsのコアコミッタとしてデファクトのポジションにあったが、これで正式なチームメンバーになったことになる。

Josh Peek氏はGoogle Summer of Codeプロジェクトの一環としてRailsをスレッドセーフに変更する取り組みをおこなった。Josh Peek氏をコアチームに迎え入れたことで、次期RailsとなるRuby on Rails 2.2にはスレッドセーフ実装が取り込まれることになる。Rails実装がスレッドセーフになることで、並列処理が高速になるほか要求するリソースが少なくてすむようになる。Railsをアクセスが多いサイトで使っている場合には朗報といえそうだ。

スレッドセーフRailsの発表に対してJRubyの主要開発者であるCharles Nutter氏はQ/A: What Thread-safe Rails Meansにおいて、スレッドセーフRailsの詳細とその効果を紹介している。スレッドセーフRailsは、随所に入っている荒いロック処理を最低限必要とされる部分だけの最小ロックに変換したものになる。これで、これまでよりも並列処理が改善されることになる。

JRuby

同氏は動作例を紹介してスレッドセーフRailsの効果を説明している。まず従来の方法であれば並列にしたい分だけインスタンスを用意する。こうすることでマルチコア/プロセッサの性能を発揮しつつ簡単に並列化ができる。難点はメモリなどのリソースを大量に消費する点にある。スレッドセーフRailsではグリーンスレッドの性能が向上しているため、最大でマルチコア/プロセッサ数だけインスタンスを生成して処理すればいい。スレッドセーフRailsではない場合と比較してリソースが少なくてすむ。

Charles Nutter氏はさらにJRubyの開発者らしく、JRubyを使えばそれが1つのインスタンスにまで削減できることを主張している。JRubyではRubyスレッドはJavaを経由してカーネルネイティブスレッドへ展開される。1つのインスタンスのままでRubyスレッドを複数のコア/プロセッサに分配できるというわけだ。このようにRailsのスレッドセーフ化はJRuby on Railsにも効果があり、Charles Nutter氏は採用するプロダクトとしてJRuby on Railsも採用検討の対象にしてほしいと主張している。