【レポート】

性能改善ツールの要「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をもっとも特徴づける機能だ。

    BSDCan2008 John Birrell氏の発表資料より抜粋 BSDCan2008 John Birrell氏の発表資料より抜粋

    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で記述されたファイルを指定してトレーシングを実施する。

    BSDCan2008 John Birrell氏の発表資料より抜粋

    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]

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン