Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
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 %8s\\n\", \"FILE\", \"SUB\", \"CALLS\"); printa(\" %-32s %-32s %@8d\\n\", @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/


