Slideshow transcript
Slide 1: DTrace and Perl
Slide 2: What is DTrace? DTrace is a comprehensive dynamic tracing framework for Solaris™ and Mac OS X™. DTrace provides a powerful infrastructure to permit administrators, developers, and service personnel to concisely answer arbitrary questions about the behaviour of the operating system and user programs.
Slide 3: Problem: Debugging a Live System
Slide 4: Possible Approaches Userspace: • Ad-hoc logging • Log4perl • Debugger Kernel space: • strace • ltrace • truss
Slide 5: Or use DTrace...
Slide 6: #!/usr/sbin/dtrace -Zs # pl_subcalls.d #pragma D option quiet dtrace:::BEGIN { printf("Tracing... Hit Ctrl-C to end.n"); } perl*:::sub-entry { @subs[basename(copyinstr(arg1)), copyinstr(arg0)] = count(); } dtrace:::END { printf(" %-32s %-32s %8sn", "FILE", "SUB", "CALLS"); printa(" %-32s %-32s %@8dn", @subs); }
Slide 7: #!/usr/bin/perl use strict; use warnings; sub fib { my $n = shift; return 1 if $n < 2; return fib( $n - 1 ) + fib( $n - 2 ); } print fib( 12 );
Slide 8: FILE SUB CALLS strict.pm bits 1 strict.pm import 1 warnings.pm import 1 fib.pl BEGIN 2 fib.pl fib 465
Slide 9: DTrace is... •Fast •Unobtrusive •Safe
Slide 10: Current Tools
Slide 11: DTrace
Slide 12: DTrace in Perl • In 5.11.0 now • Patch available for 5.10.0 • Can patch older Perls • See also Devel::DTrace
Slide 13: Probes Available • Subroutine Entry • Subroutine Exit
Slide 14: Probes Possible • Regex Compilation • eval / die • Anything you like...
Slide 15: DTrace in Perl is fast ===========================( subs )= standard | dtrace | ratio ==================================== 2.64732909 | 2.55084610 | 0.96355459 2.59817791 | 2.54752493 | 0.98050442 2.62265491 | 2.53197598 | 0.96542476 2.60479188 | 2.54577494 | 0.97734293 2.58312511 | 2.54531789 | 0.98536377 ==================================== dtrace | standard | ratio ==================================== 2.55562115 | 2.61360312 | 0.97781531 2.51933718 | 2.59808207 | 0.96969115 2.51130199 | 2.61182499 | 0.96151235 2.55779004 | 2.62898207 | 0.97292031 2.54250908 | 2.60577297 | 0.97572164 ====================================
Slide 16: DTrace Limitations • Perl stack traces • Perl data • Limited Platforms • Probe Effect
Slide 17: Where is DTrace? DTrace runs on: Solaris (including OpenSolaris) Mac OS (10.5 on) DTrace could, but doesn’t, run on: Linux FreeBSD Windows
Slide 18: It’s OK: Linux has SystemTap!
Slide 19: dtrace for Linux or something similar (LIKE SYSTEMTAP?) - jdub (NO, LIKE dtrace) - VLAD (like systemtap, but not crap) Seen on a whiteboard at OSCON
Slide 20: "That's the difference between a knockoff and the genuine article." Adam Leventhal, DTrace developer, Sun
Slide 21: Who made DTrace?
Slide 24: Mike Bryan Adam Shapiro Cantrill Leventhal
Slide 25: Andy Armstrong andy@hexten.net http://hexten.net/




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 1 (more)