Dtrace をかじってみて2009年04月06日 16時34分05秒

DTrace を Sun にあるサイトを中心に、試行錯誤したが思ったよりも敷居が高い。要点をまとめようと思ったが、予想していたよりも手間が掛かるのと、時間が取れなくて進んでいない。

しかし、真剣に使い始めようとしたら三つの問題に当たった。一つ目は、文法や内部関数に慣れないとなかなか使いこなせないこと。どの様な言語でもそれは当てはまるが、dtrace はその知識の蓄積が必要になる。gdb 等では、break、step。next、continue 等の三つ、四つコマンドがあれば随分と操作できるのと比べると、多きな差がある。

二つ目は、検査点がまだまだ少ないこと。FreeBSD ではまだまだ発展途上であり、カーネルにはそれなりの数の検査点が埋め込まれているが、ユーザランドから使えるのは少ない。その、カーネルに埋め込まれている検査点も偏りがあり、場所によってはほとんどないところもある。

三つ目は、プログラムがカーネルを呼び出した先の追跡が難しいこと。プロセス自体の呼び出し順を調べるのは比較的容易い。しかし、カーネルに動作が渡された後の追跡が至極難しい。例えば、read(2) された後の低次元の動作はカーネル内で行なわれる。そのため、プログラム名ではその動作が追えなくなってしまう。

DTrace を最初に試した時は柔軟性に惹かれたが、使いこなすにはそれなりの時間が必要そうだ。一朝一夕で出来るものでは無さそうだ。今後も時間の余裕がある時に、もっと取り上げていきたい。