Slideshare.net (beta)

 

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 1 (more)

20082501 Leeds Pm

From AndyA, 6 months ago

A presentation given to Leeds Perl Mongers on the subject of DTrac more

242 views  |  0 comments  |  0 favorites  |  3 downloads
 
 
 

Groups / Events

 
Embed
options

More Info

This slideshow is Public
Total Views: 242
on Slideshare: 242
from embeds: 0

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/