2010-08-10
OSC2010 名古屋
csnagoya | |
さる8月7日(土)に第3回目となる「オープンソースカンファレンス2010名古屋」が開催されました。
オープンソースカンファレンス2010 Nagoya - オープンソースの文化祭!
気になるセミナーはたくさんあったのですが、ぼくは概ねブースでごにょごにょしていたので、結局参加できませんでした><
基本的には非コミュなので対接客アウトプットモードに切り替えると、座ってじっとインプットいれるというのが困難になっちゃうのです。
まあ、その分出来るだけ多くの人に共同出展ブースの各団体の説明はさせていただきましたけどね。
CSNagoya Presents「古くて新しいガベージコレクションの世界」
今年もCSNagoya でセミナー枠を確保したわけです。地味に皆勤賞ですよ。
現在絶賛読書会中の通称ガベコレ本こと「ガベージコレクションのアルゴリズムと実装」をテーマに、なんと著者であるid:authorNari さんをみずから、ガベコレについてお話ししていただきました。
たしかに、出演依頼をするときにぼくはこうお願いをしました。
テーマはとくに強い指定はないのですが
GC本に搦めて、その読者が興味を持てるような
少しばかりやり過ぎちゃった感のある内容だと嬉しいです<主にぼくが
よもやこんなに激しく責めてくるとは。嬉しい誤算です♪
内容はご覧の通り、GCにおける停止時間の問題。
ハードウェアレベルで並列化できたら、ちょう速くなるんじゃね?->実は既にあった->それがELIS/TAO。ちょうどELIS復活祭もやってるしね!
とはいえ、人類の見果てぬ夢である「止まらないGC」の実現にはいろいろ課題があってなかなかむずかしい模様。はたして第4のアルゴリズムは誕生するのだろうか。
なお、会場にはだいたい70人程度入っていた模様でした。まあ、よく知った顔も多いのですが、それでも2/3以上は一般参加の方々。なかなか剛の者が揃ってます、名古屋。
GC本読書会
CSNagoya - カジュアルスタディ名古屋勉強会(csnagoya)
CSNagoyaでは 毎月第一、第三日曜日の17:30から名古屋市内で、下記GC本の読書会をやっています。
興味を持たれた方は是否お気軽にご参加ください♪
- 作者: 中村成洋,相川光,竹内郁雄
- 出版社/メーカー: 秀和システム
- 発売日: 2010/03/18
- メディア: 単行本
- 購入: 23人 クリック: 756回
- この商品を含むブログ (88件) を見る
カズ
2010/08/11 10:34
お疲れです〜
2010-08-09
CSNagoya 第5回GC本読書会 vol.5
csnagoya | |
id:authorNariさんを迎えたCSNagoyaでは、OSC名古屋 でのセッションに引き続き日曜日には CSNagoya 第5回GC本読書会 - nariさんスペシャル - を開催しました。
今回は、
を読みました。
インクリメンタルGCは、処理時間を犠牲にするものの最大停止時間を最小にするGC。一見簡単に見えるけど、実装はなかなか面倒らしく、ライトバリアの実装に各アルゴリズムの特徴が見える感じ。
今回初めてPythonのソース(の一部)を読んだのだけど、コメントが豊富でものすごく丁寧。
今回みたのはObjects/obmalloc.c だけなので、本当にごく一部なんだけどね。
RHGを手引きにしつつ、PHG(Python Hacking Guide)するべき?
とりあえずメモリアロケータの途中くらいまで進みました。
でも、ちょっと進行力が足りず中途半端なところで次回に続く、となっちゃいました ><
後半は発表大会。
csnagoya | |
GC関連のネタを仕込んできてくれたのが4名。
CoqでGCを証明してみたよ(id:mzpさん)
Coq、定理証明器ですよ。夢の「バグのないGC」の実現ですよ!
ただぼくはまだCoqの入り口にすらも触れていないので正しく理解していないわけで、最低限雰囲気がわかる程度には知っておきたいなあと思う次第です。
iPhone/iPadのメモリ管理 (id:sunflatさん)
うわー面倒くさそうだなぁObjective-C。なんでGC対応しないんだろ?
性能的に超高速というわけじゃないiPhoneではリアルタイム動作に支障が出ると、アプリケーションのエクスペリエンスが下がるから?
ちゃんとした開発者は適切に配慮できるだろうけど、そういうのが出来ないアプリが多くなると全体としての質が下がる虞がある的な。
GC in C++0x (@yak_ex さん)
闇の軍団 C++界からの刺客ですよ。
へぇ、GC支援のための機能が追加されるんだ。といっても、実質対応しなくても規格準拠になれるみたいなので多くの処理系はとうぶん対応しないのだろうなぁ、と。
Precise Garbage Collection for C の紹介(id:miura1729さん)
(「保守的なGC」は「オブジェクトであると疑わしいもの」をひっくるめて保護するので、安全ではあるものの効率はよくない)
なんか、ソースコードを変換してGCのための情報を付加したりするらしい。すごいことを考える人もいるものだ。
ちなみにBoehmの読み方は
によると
それはさておき"Boehm"の発音は日本で広まっている(?)と思われる「ボエム」ではなく、ドイツ語読みなら「ベーム」、英語読みなら「ボウム」です(本人に口頭で確認した)。
だそうですよ。
懇親会!
こちらの中華料理屋さんに行きました。
お外が明るいうちから麦酒やら紹興酒やら飲む背徳感はたまりませんね♪
サイン攻めに会うid:authorNariさんと、人生初のサインに戸惑う id:miura1729さん(GC本のレビュワーをされています)がみていて大変面白く。
料理も中国テイストの強い本格的な中華で、美味しく頂きました。
多謝
お忙しいところをはるばるお越し頂いたid:authorNariさん、どうもありがとうございました。大変充実した二日間になりました。名古屋方面の愉快な人たちも紹介できたので、きっと楽しんでもらえたものだと思っております♪
OSCNagoya ご来場いただいた皆様、あれだけ門戸を狭めたセッションにも関わらず70名以上もご出席いただいて本当にありがとうございます。正直ちょっとびっくりしました。けっこう毛色が違う感じだった気はするのですが、大成功だったと思ってます。
発表者のみなさん、素敵に濃い発表をありがとうございます。また無茶振りするのでよろしくお願いいたします♪
CSNagoya参加者の皆さん、いつもありがとうございます。今後ともよろしくお願い申し上げます。
2010-05-12
Ubuntu10.04 で Ruby Enterprise Edition を使う
サーバ | |
Ruby Enterprise Edition(REE)とは
Ruby Enterprise Edition(REE) は Ruby 1.8.x の評価器(主にGC)を修正することで、メモリ周辺の性能を大幅に改善したもの。おおざっぱには次の特徴を持つ。
- メモリアロケータに tcmalloc(google-perftoolsに含まれる)を採用し高速にメモリを確保
- Mark & Sweep なガベージコレクタにBitmap markingを導入した
- Copy-on-write に優しくなり、メモリ消費量が低減
- マーク処理が高速化
- ただし単純な実行速度自体には悪影響を与える場合もある
- トータルでは高速化している模様
というわけで、メモリを大量に消費しがちなRailsアプリケーションの実行環境として採用されることが増えている(New York Timesとか37signalsが有名)。
Ubuntu10.04 に REE をインストールするメモ。
普通はtarball からコンパイルするんですけど、Ubuntuにはもうバイナリパッケージが提供されています。素敵すぎです。
http://www.rubyenterpriseedition.com/download.html
$ wget http://rubyforge.org/frs/download.php/68718/ruby-enterprise_1.8.7-2010.01_i386.deb $ sudo dpkg -i ruby-enterprise_1.8.7-2010.01_i386.deb
これで /usr/local/bin/ruby に インストールされます。
$ /usr/local/bin/ruby -v ruby 1.8.7 (2009-12-24 patchlevel 248) [i686-linux], MBARI 0x8770, Ruby Enterprise Edition 2010.01
次にPassengerを再構築する必要があります。さっきのページに書いてあるとおりですね、親切!
$ sudo /usr/local/bin/passenger-install-apache2-module
:/etc/apache2/mods-avaiable/passenger.load LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so :/etc/apache2/mods-avaiable/passenger.conf PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.9 PassengerRuby /usr/local/bin/ruby
さらにREEは専用のgem環境が独立しています。よってRoRなアプリケーションが、既存のCRubyに依存したgemを参照しているとエラーを吐いて起動しなくなります。こんな感じ。
no such file to load -- mysql (MissingSourceFile)
aptで導入した libmysql-ruby1.8が不適切だとのお達し。なので、これを更新します。単にREE用のgemを使うだけですね。
$ sudo /usr/local/bin/gem install mysql
これでうまくいきました。
メモリ使用量の確認は passenger-memory-stats で行います。
$ sudo /usr/local/bin/passenger-memory-stats
CRuby の場合:
1989 80.6 MB 40.5 MB Passenger ApplicationSpawner: /var/rails/xxxx 1995 80.6 MB 40.5 MB Rails: /var/rails/xxxx
REE の場合:
3710 76.0 MB 26.8 MB Passenger ApplicationSpawner: /var/rails/xxxx 3712 76.0 MB 26.8 MB Rails: /var/rails/xxxx
条件が完全に同一ではないので目安程度だけど、公称通り33%削減されてます。CoWが有効に機能するということなら、プロセス数が増えるともっと効果的なのかなぁ?今のところ実行速度よりもメモリの方が重要な資源なので、この改善は非常に有り難いです。

