【レポート】
性能改善ツールの要「DTrace」がFreeBSD 8にマージ - BSDCan2008
2008/06/03
FreeBSD 8の注目機能「DTrace」
FreeBSD 8-CURRENTにおけるDTraceマージ/ビルドプロセス追加が着々と進んでいる。今後はシステムの動作統計をとるにあたって、従来のようにソースコードに変更を加えたり、sysctrl(8)値に統計情報を書き出したりといった処理を加えなくても、動的にオンザフライでシステムの統計情報が取得できるようになる。アプリケーションのソースコードに手を加える必要がなく、商用アプリケーションであっても計測とパフォーマンスボトルネックの解析ができる。FreeBSD 8の目玉機能のひとつとなるだろう。
FreeBSDではOpenSolarisやそれに類する技術が公開されてから、特にZFSとDTraceのFreeBSDへの移植が続けられてきた。5月6日(米国時間)から4日間にわたってJavaOne2008が実施されたわけだが、米Sun MicrosystemsはさらにOSS化を推進する姿勢を崩しておらず、現在CDDLのもとで提供されているZFSとDTraceは、場合によってはGPLのもとでの配布に変更される可能性がある。時期は明言されていないが、GPLに変更されてからはFreeBSDのみならずLinuxへの移植も進められるとみられる。
DTrace、D Languageで柔軟にダイナミックトレース
DTraceはもともとSolaris向けに開発されてきたダイナミックトレーシングフレームワーク。Solaris以外ではOpenSolarisに導入されているほか、Mac OS Xにも実装されている。Mac OS Xで実装されたDTraceがフラグを有効にするだけで特定のアプリケーション(たとえばiTunesなど)をトレース対象から外す機能を実装したため、DTrace本来の意義に反するとして反感意見を買ったのは記憶に新しいところだ。
DTraceではD Languageと呼ばれるスクリプト言語を組むことでシステムの情報をダイナミックにトレースできるようになっている。ここでのD LanguageとはDigital Marsによって開発されているD言語ではなく、DTrace向けに開発された専用のスクリプト言語のことをさす。C言語によく似たスクリプトで、C言語にawkやperlの機能を取り入れたような作りになっている。D LanguageはDTraceをもっとも特徴づける機能だ。
D Languageで記述する内容はイベント駆動形式になっている。計測したいイベントを指定し、そのイベントに対して何を実施するかを記述する。指定するイベントは、システムコールやプロセス情報などだ。D Languageは実行時にDIF形式で変換され、変換されたDIFデータがdtrace(8)によって解釈され実行される仕組みになっている。ソースに手を加えることなくシステムコールをフックして情報を取得できるというのはかなり強力な機能と言える。
FreeBSDにおけるDTrace - libdtrace、dtrace(8)、dtrace(9)、/dev/dtrace/dtraceX
DTraceは、OpenSolarisが公開される段階でほかのOSからも利用できるように公開されたものだ。ライセンスにはCDDL(COMMON DEVELOPMENT AND DISTRIBUTION LICENSE)を採用している。FreeBSDで使う場合には、カーネルモジュールを読み込んでDTraceを有効にしてからdtrace(8)コマンドを使ってトレーシングを実施する。dtrace(8)には直接命令を指定するか、D Languageで記述されたファイルを指定してトレーシングを実施する。
FreeBSDではlibdtrace(DTrace API)を叩くことでユーザランドアプリケーションからDTraceの機能が使えるようになっている。libtraceはデバイスioctlsを経由して排他的にdtrace(9)を使う仕組みになっている。デバイススペシャルファイルは/dev/dtrace/dtraceXだ。/dev/dtrace/dtraceXはDTraceクライアントごとに生成される。用意されているDTrace ioctrlsはPROVIDER、ENABLE、CONF、STATUS、GO、STOP、FORMATなど16ほどある。
豊富なドキュメントが開発を支援
DTraceの強力性はもちろんだが、特に注目すべきはすでに米Sun Microsytemsによって豊富なドキュメントが用意されている点にある。D Languageを使えば、ダイナミックトレースをスクリプト言語という形でノウハウとしてまとめておける。これまでに公開されているドキュメントやスクリプトサンプルは、今後DTraceを使ったFreeBSD開発やアプリケーション開発に大いに貢献することになるだろう。
DTraceは、デバッガではないし、自動的に何かをする機能でもない。指定したカーネル内イベントをトレースするための機能だ。特にパフォーマンスチューニングやボトルネックの解析に力を発揮することになるとみられる。FreeBSDデベロッパにおけるDTraceの活用も今後徐々に広がっていくことになるだろう。FreeBSDデベロッパは今後はデバッガ以外にもDTraceの活用を検討していきたい。
関連記事
- 【レポート】FreeBSD、U-Boot対応で組込開発負荷軽減 - BSDCan2008[2008/6/3]
- 【レポート】問題報告システムをより使いやすいものにするには? - BSDCan2008[2008/6/3]
- 【レポート】急成長! FreeBSD/mips対応アプライアンス - BSDCan2008[2008/6/3]
- 【レポート】Jail + リソース制限機能、FreeBSD 8で登場か - BSDCan2008[2008/6/3]
- 【レポート】FreeBSD 7、1500%ピーク性能改善の裏にあるもの - AsiaBSDCon 2008[2008/4/4]
- 【レポート】GEOMでジャーナリング、UFSの機能を柔軟に拡張 - AsiaBSDCon 2008[2008/4/4]
- 【レポート】f.root-servers.netを支えるFreeBSDとBIND9 - AsiaBSDCon 2008[2008/4/4]
- 【レポート】使いやすさ抜群! FreeBSDベースのデスクトップOS PC-BSD - AsiaBSDCon 2008[2008/4/4]
- FreeBSD 7.0登場 - 高負荷時ピーク性能が1500%改善[2008/2/28]
- FreeBSD 6.3登場 - 2010年1月セキュリティ対応期限[2008/1/20]
- 超高速HTTPアクセラレータ最新版"Varnish 1.1"登場[2007/7/23]
- 【レポート】備えあれば憂いなし - pfSense/pfSyncでネットワーク管理を容易に[2007/5/24]
- 【レポート】PCをNASサーバへ変身させる! かんたん本格派NASソリューション - FreeNAS登場[2007/5/24]
- 【レポート】高速化プログラミングの参照実装としても活用される「Varnish」[2007/5/24]
- 【レポート】FreeBSDにおけるサーバ仮想化の取り組み[2007/5/21]
- 【レポート】足掛け7年のサクセスストーリ - マルチコアシステムで大幅に性能向上達成[2007/5/19]
- 【レポート】Ports Collection 17,000へ - インフラやメカニズムの改善へ着手[2007/5/19]
- 【レポート】インストーラが世代交代 - sysintall(8)からfinstallへ[2007/5/18]
関連サイト
ヘッドライン
- 【レポート】暗号2010年問題に向け「いつまでに何をすべきか」 - ベリサインが説明[08:00 2/10]セキュリティ
- ルネサス、RXファミリ第3弾としてモータ制御向け「RX62T」を製品化[07:00 2/10]エレクトロニクス
- Rambus、次世代携帯機器向けメモリ「モバイルXDR」を発表[21:16 2/9]エレクトロニクス
- Intel、基幹業務システム向け次世代プロセッサ「Itanium 9300」を発表[20:47 2/9]エレクトロニクス
- MicronとNanya、42nmプロセスを採用した2GビットDDR3を開発[20:07 2/9]エレクトロニクス
- ISSCC 2010 - 日立、1Gbpsあたり消費電力1mW以下のトランシーバ回路を開発[19:52 2/9]エレクトロニクス
- CSSを最適化する3つのツール[17:17 2/9]JavaScript / CSS / HTML
- TIOBEプログラミング言語人気 - Scratch/Erlang/Scala/JavaFX[17:17 2/9]プログラミング
- Microsoft、Red Hat Linuxサポートをひっそり追加[17:15 2/9]システム管理
- IBM、8コア/32MB eDRAM搭載の高速CPU「POWER7」を発表 - サーバも販売開始[17:02 2/9]サーバとストレージ





