dominion525の日記

2010-08-10

OSC2010 名古屋

| 03:10 |  OSC2010 名古屋を含むブックマーク

さる8月7日(土)に第3回目となる「オープンソースカンファレンス2010名古屋」が開催されました。

オープンソースカンファレンス2010 Nagoya - オープンソースの文化祭!

気になるセミナーはたくさんあったのですが、ぼくは概ねブースでごにょごにょしていたので、結局参加できませんでした><



基本的には非コミュなので対接客アウトプットモードに切り替えると、座ってじっとインプットいれるというのが困難になっちゃうのです。



まあ、その分出来るだけ多くの人に共同出展ブースの各団体の説明はさせていただきましたけどね。

CSNagoya Presents「古くて新しいガベージコレクションの世界」

03:10 |  CSNagoya Presents「古くて新しいガベージコレクションの世界」を含むブックマーク

今年もCSNagoya でセミナー枠を確保したわけです。地味に皆勤賞ですよ。


現在絶賛読書会中の通称ガベコレ本こと「ガベージコレクションアルゴリズムと実装」をテーマに、なんと著者であるid:authorNari さんをみずから、ガベコレについてお話ししていただきました。



D

D

D


たしかに、出演依頼をするときにぼくはこうお願いをしました。

テーマはとくに強い指定はないのですが

GC本に搦めて、その読者が興味を持てるような

少しばかりやり過ぎちゃった感のある内容だと嬉しいです<主にぼくが

よもやこんなに激しく責めてくるとは。嬉しい誤算です♪



内容はご覧の通り、GCにおける停止時間の問題。

ハードウェアレベルで並列化できたら、ちょう速くなるんじゃね?->実は既にあった->それがELIS/TAO。ちょうどELIS復活祭もやってるしね!



北陸先端科学技術大学院大学JAIST主催 ELIS復活祭



とはいえ、人類の見果てぬ夢である「止まらないGC」の実現にはいろいろ課題があってなかなかむずかしい模様。はたして第4のアルゴリズムは誕生するのだろうか。



なお、会場にはだいたい70人程度入っていた模様でした。まあ、よく知った顔も多いのですが、それでも2/3以上は一般参加の方々。なかなか剛の者が揃ってます、名古屋

懇親会

03:10 |  懇親会を含むブックマーク

グルメ情報検索サイトぐるなび



戦国時代がコンセプトのお店。


でもわりとスタッフさん的な感じで駆けずり回ってたので、けっこうお疲れでありました。いろんなひととお話しできて楽しかったのですけどね。

多謝!

03:10 |  多謝!を含むブックマーク

翌日の勉強会も含めてすごく充実した週末を過ごせました。

これはまさにリア充といっても過言ではない感じです。


@nari3 さん、関係者の皆さん、来場者の皆さん、どうもありがとうございました。

GC本読書会

03:10 |  GC本読書会を含むブックマーク


CSNagoya - カジュアルスタディ名古屋勉強会(csnagoya)


CSNagoyaでは 毎月第一、第三日曜日の17:30から名古屋市内で、下記GC本の読書会をやっています。


興味を持たれた方は是否お気軽にご参加ください♪


ガベージコレクションのアルゴリズムと実装

ガベージコレクションのアルゴリズムと実装

カズカズ 2010/08/11 10:34 お疲れです〜

2010-08-09

CSNagoya 第5回GC本読書会 vol.5

| 03:08 |  CSNagoya 第5回GC本読書会 vol.5を含むブックマーク

id:authorNariさんを迎えたCSNagoyaでは、OSC名古屋 でのセッションに引き続き日曜日には CSNagoya 第5回GC本読書会 - nariさんスペシャル - を開催しました。

今回は、

  • 第8章 インクリメンタルGC(Incremental GC
  • 第9章 PythonGC

を読みました。

インクリメンタルGCは、処理時間を犠牲にするものの最大停止時間を最小にするGC。一見簡単に見えるけど、実装はなかなか面倒らしく、ライトバリアの実装に各アルゴリズムの特徴が見える感じ。

PythonGCは参照カウンタ方式。

今回初めてPythonのソース(の一部)を読んだのだけど、コメントが豊富でものすごく丁寧。

今回みたのはObjects/obmalloc.c だけなので、本当にごく一部なんだけどね。

RHGを手引きにしつつ、PHG(Python Hacking Guide)するべき?

とりあえずメモリアロケータの途中くらいまで進みました。

でも、ちょっと進行力が足りず中途半端なところで次回に続く、となっちゃいました ><

後半は発表大会。

| 03:08 |  後半は発表大会。を含むブックマーク

GC関連のネタを仕込んできてくれたのが4名。

CoqGC証明してみたよ(id:mzpさん)

D

Coq、定理証明器ですよ。夢の「バグのないGC」の実現ですよ!



ただぼくはまだCoqの入り口にすらも触れていないので正しく理解していないわけで、最低限雰囲気がわかる程度には知っておきたいなあと思う次第です。

iPhone/iPadのメモリ管理 (id:sunflatさん)

D

うわー面倒くさそうだなぁObjective-C。なんでGC対応しないんだろ?

性能的に超高速というわけじゃないiPhoneではリアルタイム動作に支障が出ると、アプリケーションエクスペリエンスが下がるから?

ちゃんとした開発者は適切に配慮できるだろうけど、そういうのが出来ないアプリが多くなると全体としての質が下がる虞がある的な。

GC in C++0x@yak_ex さん)

D

闇の軍団 C++界からの刺客ですよ。

へぇ、GC支援のための機能が追加されるんだ。といっても、実質対応しなくても規格準拠になれるみたいなので多くの処理系はとうぶん対応しないのだろうなぁ、と。

Precise Garbage Collection for C の紹介(id:miura1729さん)

D

C言語で「正確なGC」を行おう、という論文の紹介。

(「保守的なGC」は「オブジェクトであると疑わしいもの」をひっくるめて保護するので、安全ではあるものの効率はよくない)

なんか、ソースコードを変換してGCのための情報を付加したりするらしい。すごいことを考える人もいるものだ。



ちなみにBoehmの読み方は

灯台下暗し - sumiiの日記

によると

それはさておき"Boehm"の発音は日本で広まっている(?)と思われる「ボエム」ではなく、ドイツ語読みなら「ベーム」、英語読みなら「ボウム」です(本人に口頭で確認した)。

だそうですよ。

懇親会!

03:08 |  懇親会!を含むブックマーク

麒麟楼 - 今池/中華料理 [食べログ]

こちらの中華料理屋さんに行きました。

お外が明るいうちから麦酒やら紹興酒やら飲む背徳感はたまりませんね♪


サイン攻めに会うid:authorNariさんと、人生初のサインに戸惑う id:miura1729さん(GC本のレビュワーをされています)がみていて大変面白く。


料理も中国テイストの強い本格的な中華で、美味しく頂きました。

多謝

03:08 |  多謝を含むブックマーク

お忙しいところをはるばるお越し頂いたid:authorNariさん、どうもありがとうございました。大変充実した二日間になりました。名古屋方面の愉快な人たちも紹介できたので、きっと楽しんでもらえたものだと思っております♪


OSCNagoya ご来場いただいた皆様、あれだけ門戸を狭めたセッションにも関わらず70名以上もご出席いただいて本当にありがとうございます。正直ちょっとびっくりしました。けっこう毛色が違う感じだった気はするのですが、大成功だったと思ってます。


発表者のみなさん、素敵に濃い発表をありがとうございます。また無茶振りするのでよろしくお願いいたします♪


CSNagoya参加者の皆さん、いつもありがとうございます。今後ともよろしくお願い申し上げます。

2010-05-12

Ubuntu10.04 で Ruby Enterprise Edition を使う

| 04:26 | 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

表示されるがままに、apacheモジュールを更新します。

:/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が有効に機能するということなら、プロセス数が増えるともっと効果的なのかなぁ?今のところ実行速度よりもメモリの方が重要な資源なので、この改善は非常に有り難いです。