Minggu, 08 Mei 2011

Dtrace di FreeBSD

Proses tracing adalah salah satu bagian penting dari task seorang administrator sistem, melihat proses yang sedang berjalan, idle atau yang lainnya akan sangat membantu dalam proses pengaturan sistem itu sendiri. Banyak tools tracing yang tersedia, seperti  ktrace , strace dan yang lainnya. Salah satu yang cukup powerfull bagi saya adalah dtrace.
Dtrace adalah sebuah tools yang datang dengan berbagai fungsi dan kegunaan yang sangat membantu proses tracing yang dibuat oleh SUN dan menjadi bagian dari sistem operasi SunOS maupun OpenSolaris. Salah satu feature yang sangat menarik dari dtrace adalah penggunaan D  language sebagian scripting language buat dtrace itu sendiri.
FreeBSD sebagai salah satu sistem “Unix like” ikut memanfaatkan penggunaan dtrace sebagai salah satu tracing tool. Bagi para pengguna sistem ini, perlu sedikit modifikasi terhadap kernel, apabila ingin menggunakannya. Berikut langkah-langkah penggunaan dtrace di dalam sistem FreeBSD:
Pada langkah pertama saya menambahkan beberapa options untuk penggunaan dtrace, kemudian melakukan compile ulang pada kernel FreeBSD saya dengan option WITH_CTF (C Type Format).

vanzoel-21# uname -sr
FreeBSD 7.1-RELEASE-p2
vanzoel-21# cd /usr/src/sys/i386/conf/
vanzoel-21# tail -n 2 VANZOEL-21
options         KDTRACE_HOOKS
options         DDB_CTF
vanzoel-21# cd /usr/src/
vanzoel-21# make WITH_CTF=1 buildkernel KERNCONF=VANZOEL-21
vanzoel-21# make WITH_CTF=1 installkernel KERCONF=VANZOEL-21
vanzoel-21# reboot
 
Langkah kedua,, ane nge Load module dtraceall ke-dalam kernel FreeBSD,  jadi klo ingin melakukan secara otomatis setiap kali ketika sistem boot,,  edit file /boot/loader.conf ,,
vanzoel-21# kldload dtraceall
vanzoel-21# kldstat
Id Refs Address    Size     Name
1   12 0xc0400000 990bb8   kernel
2    1 0xc0d91000 20d8     dtraceall.ko
3    4 0xc0d94000 3f98     cyclic.ko
4    9 0xc0d98000 23cc     opensolaris.ko
5    7 0xc0d9b000 ba188    dtrace.ko
6    2 0xc0e56000 26d8     dtmalloc.ko
7    2 0xc0e59000 456c     fbt.ko
8    2 0xc0e5e000 2788     sdt.ko
9    2 0xc0e61000 e340     systrace.ko
10    2 0xc0e70000 33b0     profile.ko
11    1 0xc0e74000 6a2c4    acpi.ko
vanzoel-21# cat /boot/loader.conf
dtraceall_load="YES"

Seperti terlihat diatas ni,, module dtrace udah di load oleh kernel,, untuk mencobanya,, buat script sederhana sbb :

vanzoel-21# cat counter.d
dtrace:::BEGIN
{
i = 10;
}

profile:::tick-1sec
/i > 0/
{
trace(i--);
}

profile:::tick-1sec
/i == 0/
{
trace("blastoff!");
exit(0);
}
vanzoel-21# dtrace -s counter.d
dtrace: script 'counter.d' matched 3 probes
CPU     ID                    FUNCTION:NAME
0  33203                       :tick-1sec        10
0  33203                       :tick-1sec         9
0  33203                       :tick-1sec         8
0  33203                       :tick-1sec         7
0  33203                       :tick-1sec         6
0  33203                       :tick-1sec         5
0  33203                       :tick-1sec         4
0  33203                       :tick-1sec         3
0  33203                       :tick-1sec         2
0  33203                       :tick-1sec         1
0  33203                       :tick-1sec   blastoff!
Dtrace sendiri buanyak memiliki fungsi-fungsi yang bisa anda gunakan untuk keperluan tracing, dokumentasinya bisa anda baca disini,

vanzoel-21# dtrace -l | more
ID   PROVIDER            MODULE                          FUNCTION NAME
1     dtrace                                                     BEGIN
2     dtrace                                                     END
3     dtrace                                                     ERROR
4   dtmalloc                                          madt_table malloc
5   dtmalloc                                          madt_table free
6   dtmalloc                                             acpidev malloc
7   dtmalloc                                             acpidev free
8   dtmalloc                                                 fbt malloc
9   dtmalloc                                                 fbt free
10   dtmalloc                                              apmdev malloc
11   dtmalloc                                              apmdev free
vanzoel-21# dtrace -l | wc -l
33204
 
Ok, Selamat bereksplorasi dengan dtrace di FreeBSD ,, :)

visit kecoak-E

Tidak ada komentar:

Posting Komentar