FreeBSD 7.1 で DTrace を使う準備 ― 2009年02月10日 06時14分13秒
dtrace はシステム内部の挙動やシステム関数などの様々な情報を計測、取得、処理できる。truss などもシステムコールの呼び出しを追跡する事は出来るが、dtrace は呼び出しだけでなく、呼び出された時の、引数や戻り値にまで参照できる。
7.1-RELEASE では GENERIC カーネルを変更して、カーネルを作り直す必要がある。その点では、8-CURRENT も同じだ。カーネルの設定に以下の options を追加する。
options KDTRACE_HOOKS # all architectures
options KDTRACE_FRAME # amd64-only
カーネルを全部作り直す必要があるので、make clean を実行する。
$ cd /usr/obj/usr/src/sys/GENERIC/
$ make clean
$ cd /usr/src
$ make buildkernel WITH_CTF=1
$ make installkernel
また、WITH_CTF=1
を忘れずに実行すること。WITH_CTF=1
は他の方法では有効に出来ず、またこれを行なわないと dtrace は動作するカーネルが作れない。
再起動後、kldload dtraceall
を行なう。コンソールに、CDDL についての表示がされるようだ。
$ kldload dtraceall
This module (opensolaris) contains code covered by the
Common Development and Distribution License (CDDL)
see http://opensolaris.org/os/licensing/opensolaris_license/
$ dtrace -l | head -10
ID PROVIDER MODULE FUNCTION NAME
1 dtrace BEGIN
2 dtrace END
3 dtrace ERROR
4 dtmalloc fbt malloc
5 dtmalloc fbt free
6 dtmalloc cyclic malloc
7 dtmalloc cyclic free
8 dtmalloc solaris malloc
9 dtmalloc solaris free
dtrace -l
で dtrace が動いているかを確認する。有効になっていない場合は、以下の様なエラーが表示される。
$ dtrace -l
dtrace: failed to initialize dtrace: DTrace device not available on system
これで準備は整った。
次回。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/02/10/4110931/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。