View Source

DTrace exists to help you figure out how the system works and why the system is sluggish or acting in an unexpected manner. The name is short for Dynamic Tracing: a powerful idea pioneered by DTrace. Dynamic tracing allows one to *peer into all parts of the system* \-\- kernel, device drivers, libraries, services, web servers, applications, databases \-\- without any restarts, recompilations,or overhead. DTrace is a powerful tool in any programmer's toolkit, and has been included by default with various operating systems including Illumos, Solaris, Mac OS X, FreeBSD, and QNX. A Linux port is in development.

DTrace works by dynamically patching live running instructions with instrumentation code. The DTrace facility also supports Static Tracing: where user-friendly trace points are added to code and compiled-in before deployment.

DTrace provides a language, 'D', for writing DTrace scripts and one-liners. The language is like C and awk, and provides powerful ways to filter and summarize data in-kernel before passing to user-land. This is an important feature that enables DTrace to be used in performance-sensitive production environments, as it can greatly reduce the overhead of gathering and presenting data. ...[more|]

There is also a [pony|].

h2. DTrace for Beginners

* [Tutorial: DTrace by Example|]
* [Using DTrace to Analyze Your Webstack|] (short video)
* [Top 10 DTrace scripts for Mac OS X|]
* [Introducción a DTrace|] (in Spanish)

h2. More DTrace

* [DTrace FAQs|]
* [Advanced DTrace Tips, Tricks and Gotchas|]
* [DTrace: printf debugging for seventh-level wizards|]

h2. Books

* [DTrace Guide|] \- now ported and updated for illumos\!
* Dynamic Tracing Guide: the original reference manual, freely available as a 408 page [PDF|] (2008)
* [Solaris Performance and Tools|]: takes Solaris perf analysis further with DTrace, 440 pages (2006)
* DTrace: the DTrace book of scripts and strategy, 1100 pages (2011). Read a [sample chapter on Brendan's blog|]
** [Introduction to the DTrace Book|]
** [What's in the DTrace Book|]
** [Brendan's talk at BayLISA about DTrace and the DTrace book|]
** [Updated DTrace book intro, DTrace book and Solaris 11|]

h2. Videos on DTrace

* [Bryan Cantrill's Google Tech Talk|]
* [Breaking Down MySQL/Percona Query Latency With DTrace|]
* [Little Shop of Performance Horrors|]
* [DTrace BoF at LISA10|]
* [Brendan Gregg on DTrace|] at the Kernel Conference Australia, 2009
* [How to Build Better Applications with Oracle Solaris DTrace|]
* [Observing Your App and Everything Else it Runs on Using DTrace|]
* [DTracing Your Website|]
* [The Problems Solaris Solves: Diagnosing Live Systems with DTrace|]
* “DTrace, Goals, Successes, Failures, and Solving Problems” \- [Adam Leventhal|] - [video|]
* “Building a monitoring framework using DTrace and MongoDB” \- [Dan Kimmel|] \- [video|]
* “Debugging with DTrace” \- [Max Bruning|] \- Training Director, Joyent \- [video|]
* “Solving Problems with DTrace on any Platform” \- [Brendan Gregg|] \- [video|]

h3. dtrace.conf 2012 Videos

For a good overview and wrap-up, see [Adam's blog post on dtrace.conf|].

| State of the Union - [video|] | [Bryan Cantrill|] |
| Setting the Agenda - [video|] | |
| User-Level CTF - [video|] | [Adam Leventhal|] |
| Dynamic Translators - [video|] | [Dave Pacheco|] |
| Control flow & language enhancements - [video|] | [Eric Schrock|] |
| [Carousel ride\!|] | |
| Clang Parser for DTrace - [video|] | John Thompson |
| Visualizations - [video|] | [Brendan Gregg|] |
| Visualizations, Enabling toolchain for seamless USDT - [video|] | Theo Schlossnagle |
| Visualizations - [video|] \\ | [Richard Elling|] |
| [DTrace in node.js|] \- [video|] | [Mark Cavage|] |
| [User-land probes for Erlang virtual machine|] \- [video|] | Scott Lystig Fritchie |
| DTrace on Linux - [video|] | Kris Van Hees |
| [ZFS DTrace provider|DOC:dtrace.conf 2012 - ZFS DTrace Provider] | [Matt Ahrens|] |
| DTrace on FreeBSD - [video|] | Ryan Stone |
| Barriers to Adoption - [video|] | Jarod Jenson |