Dtrace in netbsd

Embed Size (px)

DESCRIPTION

Dtraceのソース読んだ概要です。まだまだ途中なのですが、経過報告がてらLTでしゃべろうかと。 (This slide is written in Japanese.I don't finish read all source code of dtrace,but I'd like to talk about my experience and share the knowledge.)

Citation preview

  • 1. Dtrace in NetBSD ()@akachochin

2. NetBSDdtrace**LT 3. NetBSDMFPMIPSARMARMTwitter@akachochin() 4. dtraceSunSolaris()DTrace NetBSD6.0x86dtraceFreeBSDMac OS X 5. 1dtrace OSdtrace(OracleWeb Page)dtrace 6. 2dtrace -l # dtrace -l | head -n 10ID PROVIDERMODULE FUNCTIONNAME 1 dtrace BEGIN 4fbt netbsdAES_GMAC_Final entry 5fbt netbsdAES_GMAC_Final return 7. 3writefbt:netbsd:sys_write:entry{ self->ts = timestamp;}fbt:netbsd:sys_write:return{@time[execname] = avg(timestamp self->ts);self->ts = 0;} 8. 4sys_write()sys_write()returndtrace 9. sys_write() 10. dtrace -l()fbtdtrace()dtrace_probe()dtracedtracedtrace 11. 1dtrace_probe()fbt_invop()dtrace_invop_add()...?dtrace_invop_add()external/cddl/osnet/dev/dtrace/i386(amd64)/dtrace_subr.c 12. 2i386dtrace_invop_add()dtrace_invop_hdlrfbt_invop()dtrace_invop()dtrace_invop_hdlr 13. 3dtrace_invop()dtracedtrace_invop_startdtrace_invop_startdtracedtrace_invop_jump_addr_dtrace_invop_jump_addrdtrace_invop_start() 14. 4dtrace_invop_jump_addrdtrace_invop_jump_addrdtracesys/arch/i386/i386/vector.S trap6 15. 5trap6 --> dtrace_invop_jump_addrdtrace_invop_start -->dtrace_invop_start dtrace_invop() -->dtrace_invop()dtrace_invop_add()dtrace_probe()trap6 16. trap6/VM()Intel 64 and IA-32 ArchitecturesSoftwareDevelopers Manual 1846Interrupt 6Invalid Opcode Exception (#UD) 17. 6trap6dtracedtracedtracedtrace 18. 7fbtfbt_enable() for (; fbt != NULL; fbt = fbt->fbtp_next) { *fbt->fbtp_patchpoint = fbt->fbtp_patchval; } 19. 8Write Protectionpatchpointpatchvalpatchvalpatchpointpatchpoint 20. 9fbtp_patchpointfbtp_patchvalfbt_provide_module_cb()push %ebpret( 21. 10FBT_PATCHVALpatchvalpatchpointpatchpoint 22. 11fbt_provide_module_cb()ksyms_mod_foreach()ksyms_mod_foreach()()(fbt_provide_module_cb()) 23. 12ELF.symtabhttp://www.skyfree.org/linux/references/ELF_Format.pdfElf32_Sym 24. dtracetrap6.symtab()dtracetrap6 25. m( )m