current
- DTrace default enabled on FreeBSD 10-CURRENT
FreeBSD 10-CURRENTにおいてDTraceの機能がデフォルトで有効化されました。これまでライセンスへの懸念からデフォルトでは無効化されていたDTraceですが、
10-CURRENTではデフォルトで無効化されていたDTraceがデフォルトで利用可能になりました。 10-CURRENTでは、
システムを起動したあとは次のようにカーネルDTraceのフックが入っていることを確認できます。 % sysctl -a | grep dtrace kern.features.kdtrace_hooks: 1 % kldstat | grep dtrace %
DTraceのカーネルモジュールを読み込むことで、
DTraceの機能を利用することができます。 $ kldload dtraceall
% sudo kldload dtraceall % sysctl -a | grep dtrace kern.features.kdtrace_hooks: 1 debug.dtrace.providers: dtrace dtmalloc nfscl nfsclient fbt lockstat cbb vfs proc callout_execute mac mac_framework priv sctp syscall syscall profile debug.dtrace.debug: 0 debug.dtrace.verbose_ioctl: 0 % kldstat | grep dtrace 16 1 0xffffffff82a44000 b73 dtraceall.ko 19 11 0xffffffff82a4f000 23b6ba dtrace.ko %
% dtrace -l | head ID PROVIDER MODULE FUNCTION NAME 1 dtrace BEGIN 2 dtrace END 3 dtrace ERROR 4 dtmalloc nfsclient_req malloc 5 dtmalloc nfsclient_req free 6 dtmalloc nfsclient_bigfh malloc 7 dtmalloc nfsclient_bigfh free 8 dtmalloc nfsclient_diroff malloc 9 dtmalloc nfsclient_diroff free %
システム起動時に自動的にDTraceカーネルモジュールを読み込ませたい場合には、
/boot/ loader. confファイルに次の設定を追加しておきます。 dtraceall_load="YES"
10-CURRENTよりも前のバージョンでは今のところ明示的にオプションを指定してカーネルをビルドする必要があります。amd64版とi386番でカーネルオプションが違うほか、
ビルドの指定オプションが異なります。 amd64版では次のカーネルオプションが必要になります。
options KDTRACE_HOOKS # mandatory options DDB_CTF # mandatory options KDTRACE_FRAME # for amd64 makeoptions DEBUG="-g" # for amd64 makeoptions WITH_CTF=1 # 9.0+
i386版では次のカーネルオプションです。
options KDTRACE_HOOKS # mandatory options DDB_CTF # mandatory
9.
0またはこれ以降のバージョンの場合には、 次の設定もカーネルオプションとして追加します。 makeoptions WITH_CTF=1 # 9.0+
9.
0以降のバージョンではビルドは次のように実施します。 $ make buildkernel KERNCONF=FREEBSD $ make installkernel KERNCONF=FREEBSD
9.
0よりも前のバージョンを使っている場合、 次のようにWITH_ CTFオプションを指定する必要があります。 $ make buildkernel KERNCONF=FREEBSD WITH_CTF=1 $ make installkernel KERNCONF=FREEBSD
DTraceはカーネル開発やアプリケーション分析において有益な機能です。