Porting Dtrace to Netbsd/Arm

Porting Dtrace to Netbsd/Arm

Porting DTrace to NetBSD/arm Ryota Ozaki ozaki-r@{iij.ad.jp,NetBSD.org} AsiaBSDCon 2014 March 16, 2014 Who’s am I? ● Ryota Ozaki ● working at IIJ ○ ISP company in Japan ● a NetBSD developer ○ since the last month :) ● an OSS developer ○ find me (ozaki-r) at github or Ohloh Motivation ● We (IIJ) want DTrace on ARM for our productions ● Not supported yet on NetBSD :-/ ○ even on FreeBSD ● Do it by ourselves! ● ● For fun :) Standing on the shoulders of giants ● Solaris DTrace ● FreeBSD DTrace ● NetBSD DTrace ● DTrace for ARM ○ Some source codes for ARM were already imported into NetBSD ○ written by gonzo@FreeBSD ○ imported by christos@NetBSD What I need to do ● Fix existing code to make it buildable ○ Support SDT provider ● Support of FBT provider ○ Probable instruction explore ○ Exception handling ○ Instruction emulations ● Others ○ Optimizations ○ Support THUMB instructions in the kernel ○ Support other providers ○ etc. Supporting FBT provider Background ● FBT: Function Boundary Tracing ● How it works ○ Preparation ■ Explore probable instructions ■ Replace instructions at the entry and return points of a target function with a breakpoint instruction ● Preserve original instructions ○ Probing ■ Handle an exception of the breakpoint and probe the runtime context ■ Emulate the replaced instruction ■ Return to the original context ○ Cleanup ■ Restore original instructions to probe points Supporting FBT provider Current implementation ● Breakpoint ○ Use undefined instructions ● Trap handler ○ added in undefinedinstruction of sys/arch/arm/arm/undefined.c ● Instruction emulations ○ Written in C ○ Need to optimize in the future Supporting FBT provider Instruction emulations ● The instruction deconding on ARM is easier than i386/amd64 ○ Thanks to constant size of instructions ● ARM allows many instructions to be entry points and return points ● 11 instruction emulations cover ~80% of probe points ○ On amd64 push and retq emulations can cover most probe points :-/ Supporting FBT provider Conditional executions ● Encode a condition specifier into a breakpoint 0xE1A0C00D mov ip, sp 0xE7FFFEFE <UNDEFINED> ● Get a condition specifier from a breakpoint instruction on exception handling ● Run the DTrace probe function only if the condition passes Current status ● Done ○ Half of my patch (trivial parts) were committed already ○ FBT patches have been commited during the conference :) ● Tested environments ○ -m evbarm (-a earm) kernel=BEAGLEBONE ● Acknowledgment ○ I have to say thank you to matt and christos for great helps! Any questions?.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us