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 :
Dtrace sendiri buanyak memiliki fungsi-fungsi yang bisa anda gunakan untuk keperluan tracing, dokumentasinya bisa anda baca disini,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!
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