RubyKaigi 2015レポート

小崎資広さん「人に依存しないデバッグのために,道具の使い方を知ってほしい」〜RubyKaigi 2015基調講演 2日目

この記事を読むのに必要な時間:およそ 2 分

12月11日~13日,ベルサール汐留にてRubyKaigi 2015が開催されました。今年も基調講演が毎日一つずつ行われました。その模様をレポートします。

RubyKaigi 2015 2日目の基調講演は,世界で唯一の,LinuxのコミッタでありRubyのコミッタでもある小崎資広さんです。今回,小崎さんは「Linux loves Ruby. Ruby Loves Linux - How to debug your linux box」と題して,発表しました。

画像

Linux portメンテナのお仕事

小崎さんは,Ruby Core Teamでの自分の役割を「Linux Portメンテナ」と称し,これまでの仕事の内容を紹介しました。

Linux Portメンテナは,Rubyのバグ管理サイトにLinuxに関するバグが登録されたきに活躍するそうです。

TCPをcloseしたソケットにselectするとGNU/LinuxのみでRubyがハングするというバグが登録されたときは,Rubyを直すのではなくLinuxのカーネル開発者側にコードの変更をお願いしたそうです。「1アプリケーションであるRubyの挙動のために,何故カーネル側を修正しないといけないのか」という意見も出たようですが,無事修正されました。

また,RubyはLinuxの新しいファイルシステムのデバッグにも役だったと話します。これは,Rubyの本体にはテストコードが豊富に書かれているため,Rubyのテストが新しいファイルシステムでは動かないということがあったためだそうです。

このように,Rubyのようなアプリケーション開発陣が,Linuxカーネルの挙動に対して意見を言うというのはLinuxカーネルコミュニティにとってよい影響を与えると説明しました。

もしアプリケーションのバグがカーネルの挙動のため発生したときに,アプリケーション開発陣がカーネルの挙動を避けるために場当たり的な処置ばかりをいれられてしまうと,カーネルの開発を進める際にそのアプリケーションの挙動を守るためにコードが書き辛くなってしまいます。そのため,場当たり的な処置をいれるより,フィードバックを返してくれたほうがよいとのことです。

OSSにパッチを送るのはテトリスのようにやる

小崎さんの同僚は「OSSにパッチを送り,いれてもらうのはテトリスのようなもの」と述べているそうです。

画像

その理由は,問題を一度に片付けれる大きな固まりとなっているパッチや,きたないパッチは問題を解決できるからといって取り込まれることは少ないそうです。しかし,テトリスのように小さいピースを少しずつ積んでいき,最後に綺麗に全体を消すやり方,つまり問題を分割して一個一個丁寧に議論と綺麗なパッチを重ね大きな問題を解決するというやり方が好まれると言います。そしてこれは,OSSだけでなく,一般的にどこでも通用する考え方だと,小崎さんは述べています。

Linux のデバッグツール

さて,Linuxコミッタでもある小崎さんはRubyistがたくさんいる会場で,Linuxのデバッグツールを紹介し布教したいと言い,次の3つのツールを紹介しました。

  • Ftrace
  • perf tools
  • SystemTap

これらのツールを紹介している際,小崎さんはなぜ今回デバッグのツールを紹介するのか,その理由を次のように話しました。

「デバッグという作業は何も生産しないためすぐ終わるべきだが,この作業は慣れと直感で作業する人が多い。その人依存になってしまうのはよいことではないため,人に依存しない道具の使い方を知ってほしい」(小崎さん)

Ftrace

今回紹介したツールの中でFtraceが一番使いやすく,簡単なツールです。Ftraceを使うと,すべてのプロセスで発生するカーネルでのイベントを取得できるそうです。使い方は簡単で,sysfs上の特定のファイルに1を書き込むことでFtraceによるロギングが可能になります。Red Hat Enterprise Linux 7では,Ftraceで取得できるイベントが1,500程度用意されているそうです。

画像

Ftraceは,一度有効にするとずっとログを取得しつづけるそうです。Ftraceのログが書き込まれるバッファは,リングバッファとなっており一定の量が書き込まれると,古いものが消えていくようになる仕組みになっています。そのため,Linuxやアプリケーションがクラッシュすることはなく,スローダウンが発生するような状況のデバッグに有効だと言います。

Ftraceの使い方は,作者のSteven Rostedtが作成した入門ガイドがとても詳しいと薦めていました。

著者プロフィール

三村益隆(みむらみつたか)

株式会社永和システムマネジメントで働くRubyプログラマ。Asakusa.rb所属。1983年生まれ。著書にパーフェクト Ruby(共著)がある。

Blog:http://d.hatena.ne.jp/takkan_m
Twitter:@takkanm

コメント

コメントの記入