MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

吉岡 弘隆 - よしおか ひろたか

日本OSS推進フォーラム ステアリングコミッティ委員
OSDL Board of Directorsを歴任
カーネル読書会主宰

2000年6月、ミラクル・リナックスの創業に参加。
95年~98年、米国OracleにてOracle RDBMSの開発をおこなっていた。
98年にNetscapeのソースコード公開(Mozilla)に衝撃をうけ、オープンソースの世界に飛びこみ、ついには会社も立ち上げてしまう。
2008年6月取締役CTOを退任し一プログラマとなった。

ミラクル関連リンク

なかのひと

サイト検索

2009年6月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

« Asianux Server 3 β版レビューキャンペーンと、よしおか賞 | メイン | NDD (Nomikai Driven Development) »

RejectKaigi2007

RubyKaigi 2007がおわって撤収作業中に、RubyKaigiでreject(採択にならなかった)ネタをあつめての一人2分半でのプレゼンテーションがRejectKaigi2007だ。2分半という時間は絶対で、ノートの設定用30秒も含めて、2分半たつと強制的に打ち切りで画面が切られる。

まとめページはTAKESAKOさんのページを参照。
http://labs.cybozu.co.jp/blog/takesako/2007/06/rejectkaigi2007.html

全部で19人、一人2分半の持ち時間でも結構しゃべれるのね、と思いました。

こんな素晴らしい発表をリジェクトするなんて、本家RubyKaigi2007のCFPの応募がいかに充実していたのか想像できます。むしろ、リジェクトしたことを後悔させるぐらいの意気込みだったのかも。発表者の皆さん、スタッフの皆さん、大変楽しい時間をありがとうございました&お疲れ様でした。

さてわたしの持ネタ(笑)のキャッシュミス。キャッシュミスを削減する方法というのは昔はいろいろ大変で素人にはなかなか手が出せなかったのだが、昨今はツールも充実しプロセッサの機能も豊富になってきたので、お手軽にためせるようになった。ハードウェアエンジニア(プロセッサのアーキテクト)でなくても、各種ツールでキャッシュミスを測定できる。linuxだったらoprofileだ。

さて、発表した持ネタは下記のブログを再構成したものである。時系列でまとめるので、参考にしてほしい。

そもそものきっかけは、カーネル読書会で小崎さんがmallocのお話をして、そのとき、ささださんがGCでの動作の質問をして、ふとキャッシュミス測定してみたら面白いんじゃないと思ったのがはじまりである。

その時のビデオも公開しているので参考にしてほしい。質問が聞きとりにくいとか、いろいろ限界もあるのだけど、雰囲気だけでも感じとってね。

今回もmalloc/freeのコストについてRubyの笹田さんがRubyでのメモリ管理の観点から細かい突込みを入れていたが、OSとアプリケーション(この場合はプログラミング言語の実装)の境界を越えて、いろいろ議論できるのが楽しい。

第67回カーネル読書会、ビデオ公開
http://blog.miraclelinux.com/yume/2006/09/67_8c37.html

まづ手始めに自分のノートで測定してみた。ノートPCなので、acpi関係のロードが大きい。

Rubyのプロファイリング (ユメのチカラ)
http://blog.miraclelinux.com/yume/2006/10/ruby_0b0e.html

そこで会社のXeonで測定してみたのが下記。os_each_obj にキャッシュミスを多発している部分を発見する。

ソースとoprofileの結果をつきあわせてみて特定した。
  for (;p < pend; p++) {
      if (p->as.basic.flags) { /* ここの部分 */
  ...
というコードなので、prefetchでいけるだろうと考えた。

Rubyのキャッシュミスを測定する。(未来のいつか/hyoshiokの日記)
http://d.hatena.ne.jp/hyoshiok/20061002#p2

でquick and dirty hackが
        for (;p < pend; p++) {
+         if ( (p+1) < pend) {
+               __asm__ __volatile__ (
+                  " prefetch (%0)\n"
+                  : : "r" ((p+1)->as.basic.flags) );
+           }
みたいなパッチになる。

L1 キャッシュミスを約41.8%削減した。実行スピードにはほとんど影響をあたえなかったが(とほほ)。

Cache Aware Ruby Patch (未来のいつか/hyoshiokの日記)
http://d.hatena.ne.jp/hyoshiok/20061003#p1

最後に上記の実験で得た知見をまとめたのが、「コードを読むな、理解しろ」である。

コードを読むな、理解しろ (ユメのチカラ)
http://blog.miraclelinux.com/yume/2006/10/post_e3d6.html

詳細は「コードを読むな、理解しろ」を参照していただくとして、キャッシュミスの削減という従来であれば「深い技術」が、オープンソースと各種ツールの整備のおかげで、いとも簡単に実装実験できる「浅い技術」までおりてきたのである。

わたしが実施しお見せしたような事が、このブログを見ているキャッシュミス削減なんか考えたこともないプログラマや、あるいはベテランなんだけどもオープンソースに土地勘のないプログラマにも再現可能な事として誰でも実施できるようになったのである。

研究のコモディティ化(?)である。こんなに楽しいことを大学や企業の研究室の中だけで閉じこめておくのはもったいない。

カーネル読書会というオープンソースのコミュニティの議論をきっかけにあたらしい知見が生みだされたという実例なのである。つくづく恐しい時代になったものだなあ(笑)

RejectKaigi2007に参加して、そんなことを思ったのだけど2分半のプレゼンには全然もりこめていない。

発表資料は下記。
http://blog.miraclelinux.com/yume/files/rubykaigi070610.pdf

Happy Hacking!

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/7010720

このページへのトラックバック一覧 RejectKaigi2007:

» NDD (Nomikai Driven Development) トラックバック ユメのチカラ
昨日、日本SGIソリューション・キュービック・フォーラムのOSS/Linux パ [続きを読む]

» メモリアクセスは遅い トラックバック ユメのチカラ
多くのプログラマにとってメモリアクセスの速度を気しなければならない状況というのは [続きを読む]

コメント

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.