Ruby on Rails with DTrace デモ
先日、MySQL Users Conference Japan 2007 で行ったデモを公開します。
このデモでは、Ruby on Railsの動作をDTraceを使って追跡し、RubyのFunctionの呼び出し回数や実行時間、平均実行時間、CPU利用時間、CPU平均利用時間をリアルタイムでグラフィカルに確認することができます。
例えば、Ruby on Railsで作成されたWebアプリにアクセスがあったときに、どのソースコードのFunctionが何回呼び出され、実行に何秒掛かったなど、今までのデバックでは解析が難しかった情報を、簡単にリアルタイムで解析できます。
しかも、既存のソースコードに全く変更を加えず、オーバーヘッドもほとんど無くです!
さらに、表示される順番は、呼出回数や実行時間などのカラムをクリックするだけで簡単にソートすることができます。
この機能を使って、実行に時間の掛かっているコードや頻繁に呼び出されているコードを確認することができます。
呼出回数でソートした例
実行時間でソートした例

さらにさらに、各ソースコードに焦点を絞って、どのクラスが呼ばれているか、どのメソッドが呼ばれているか、どの行のメソッドが呼ばれているか、などより詳細に解析することができます。
特定のソースコードのクラスに注目した例

特定のソースコードのメソッドに注目した例
特定のソースコードの行番号に注目した例

ほかにも、RubyのObject生成がされた回数や生成時間などについてもDTraceを使って詳細に解析することができる、Ruby on Rails Object Monitorも作りました。
こちらも、先ほどと同様に、生成回数や生成時間などのカラムでソートしたり、特定のソースコードに注目して詳細を解析したりすることもできます。


このデモを見てみたい、使ってみたいなどのご要望がありましたら、このブログにコメント、もしくはkazuya.kawahara@sun.comまでメール頂ければと思います。
次回の更新では、このデモの構築方法(必要な環境やバイナリの作成方法など)を紹介したいと思います。