Files
awesome-awesomeness/html/dtrace.html
2024-04-20 19:22:54 +02:00

351 lines
14 KiB
HTML

<h1 id="awesome-dtrace-awesome">Awesome DTrace <a
href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a></h1>
<p>A curated list of awesome DTrace books, articles, videos, tools and
resources.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#learn">Learn</a></li>
<li><a href="#articles">Articles</a></li>
<li><a href="#videos">Videos</a></li>
<li><a href="#software">Software</a></li>
<li><a href="#tools">Tools</a></li>
<li><a href="#community">Community</a></li>
<li><a href="#contributing">Contributing</a></li>
</ul>
<hr />
<h2 id="learn">Learn</h2>
<p>Recommended reading for learning DTrace.</p>
<h3 id="books">Books</h3>
<ul>
<li><a href="http://dtrace.org/guide/preface.html">Dynamic Tracing
Guide</a> - Illumos.org DTrace guide.</li>
<li><a href="http://www.dtracebook.com/index.php/Main_Page">DTrace:
Dynamic Tracing in Oracle Solaris, Mac OS X, and FreeBSD</a> - Official
DTrace book.</li>
<li><a href="http://myaut.github.io/dtrace-stap-book/">Dynamic Tracing
with DTrace &amp; SystemTap</a> - A book introduces both DTrace and
SystemTap.</li>
</ul>
<h3 id="other">Other</h3>
<ul>
<li><a href="https://illumos.org/man/1m/dtrace">dtrace(1m) man page</a>
- DTrace manual page.</li>
<li><a
href="http://www.brendangregg.com/DTrace/DTrace-cheatsheet.pdf">DTrace
cheatsheet</a> - DTrace cheatsheet by Brendan Gregg.</li>
<li><a
href="http://www.brendangregg.com/DTrace/dtrace_oneliners.txt">DTrace
one-liners</a> - DTrace one liners. Handy commands.</li>
<li><a href="https://wiki.freebsd.org/DTrace/One-Liners">DTrace
one-liners (FreeBSD)</a> - DTrace one liners from FreeBSD.</li>
<li><a
href="http://www.tablespace.net/quicksheet/dtrace-quickstart.html">DTrace
QuickStart</a> - DTrace quick starting guide.</li>
<li><a href="https://github.com/NanXiao/using-dtrace-stories">Using
DTrace stories</a> - A collection of using DTrace to debug system
stories.</li>
<li><a href="http://dtrace.org/resources/bmc/dtrace_tips.pdf">Advanced
DTrace Tips, Tricks and Gotchas</a> - A collection of advanced tips for
using DTrace.</li>
</ul>
<h2 id="articles">Articles</h2>
<p>Interesting articles about DTrace and real-world use cases.</p>
<h3 id="pid-provider">PID Provider</h3>
<ul>
<li><a
href="http://dtrace.org/blogs/brendan/2011/02/09/dtrace-pid-provider/">pid
provider: entry probe</a> - DTrace PID Provider.</li>
<li><a
href="http://dtrace.org/blogs/brendan/2011/02/11/dtrace-pid-provider-arguments/">pid
provider: entry arguments</a> - DTrace PID Provider Arguments.</li>
<li><a
href="http://dtrace.org/blogs/brendan/2011/02/14/dtrace-pid-provider-return/">pid
provider: return</a> - DTrace PID Provider return.</li>
<li><a
href="http://dtrace.org/blogs/brendan/2011/02/16/dtrace-pid-provider-instructions/">pid
provider: instructions</a> - DTrace PID Provider Instructions.</li>
<li><a
href="http://dtrace.org/blogs/brendan/2011/02/18/dtrace-pid-provider-overhead/">pid
provider: overhead</a> - DTrace PID Provider Overhead.</li>
<li><a
href="http://dtrace.org/blogs/ahl/2005/03/01/pid-provider-exposed/">pid
provider exposed</a> - PID providers internals by Adam Leventhal.</li>
<li><a
href="http://dtrace.org/blogs/bmc/2011/03/09/when-magic-collides/">When
magic collides</a> - PID provider bug deep dive by Bryan Cantrill.</li>
</ul>
<h3 id="usdt-provider">USDT provider</h3>
<ul>
<li><a
href="http://dtrace.org/blogs/dap/2013/11/20/understanding-dtrace-ustack-helpers/">Understanding
DTrace ustack helpers</a> - DTrace ustack helpers.</li>
<li><a
href="http://dtrace.org/blogs/dap/2011/12/13/usdt-providers-redux/">USDT
Providers Redux</a> - Reference for building USDT providers in custom
applications.</li>
</ul>
<h3 id="sysevent-provider">Sysevent provider</h3>
<ul>
<li><a
href="https://blogs.oracle.com/eschrock/entry/dtrace_sysevent_provider">DTrace
sysevent provider</a> - Solaris/illumos sysevent provider for
DTrace.</li>
</ul>
<h3 id="ruby-and-dtrace">Ruby and DTrace</h3>
<ul>
<li><a
href="https://vaneyckt.io/posts/using_dtrace_to_measure_mutex_contention_in_ruby/">Using
DTrace to measure mutex contention in Ruby</a> - Mutex contention
measuring in Ruby.</li>
</ul>
<h3 id="visualization-methods">Visualization methods</h3>
<ul>
<li><a
href="http://www.brendangregg.com/flamegraphs.html">Flamegraphs</a> - A
visualization of profiled software, allowing the most frequent
code-paths to be identified quickly and accurately.</li>
<li><a href="http://brendangregg.com/heatmaps.html">Heat Maps</a> - Heat
maps allow three dimensions of data to be visualized, similar to weather
radar maps where color is used as a dimension.</li>
</ul>
<h2 id="videos">Videos</h2>
<p>Interesting videos about DTrace.</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=TgmA48fILq8">DTrace
review</a> - Bryan Cantrill explains how to significantly improve
debugging both for development and live systems with DTrace.</li>
</ul>
<h3 id="dtrace.conf">dtrace.conf</h3>
<ul>
<li><a
href="https://youtu.be/RvyP61WeFdM?list=PL8516982CBF9FADCC">dtrace.conf
2008</a>
<ul>
<li><a
href="https://www.youtube.com/watch?v=sgBCz7bXkSo&amp;index=4&amp;list=PL8516982CBF9FADCC">NFSv3
and iSCSI providers</a></li>
<li><a
href="https://www.youtube.com/watch?v=1Bc2Dz8aS6s&amp;list=PL8516982CBF9FADCC&amp;index=5">DTrace
for hardware</a></li>
<li><a
href="https://www.youtube.com/watch?v=D8_onK0pSvA&amp;index=8&amp;list=PL8516982CBF9FADCC">Zones
&amp; DTrace</a></li>
<li><a
href="https://www.youtube.com/watch?v=e55iXXYj-74&amp;index=10&amp;list=PL8516982CBF9FADCC">DTracing
a Solaris build</a></li>
<li><a
href="https://www.youtube.com/watch?v=yR39YqVXQOM&amp;index=11&amp;list=PL8516982CBF9FADCC">War
Stories</a></li>
<li><a
href="https://www.youtube.com/watch?v=uK0DjEXo99w&amp;list=PL8516982CBF9FADCC&amp;index=12">Sun
Benchmarks</a></li>
<li><a
href="https://www.youtube.com/watch?v=PXIGE5GFAkE&amp;index=13&amp;list=PL8516982CBF9FADCC">Erlang</a></li>
<li><a
href="https://www.youtube.com/watch?v=YTNiCv9Za2Y&amp;index=14&amp;list=PL8516982CBF9FADCC">Erlang
(continued)</a></li>
<li><a
href="https://www.youtube.com/watch?v=4astU1_X5xM&amp;index=15&amp;list=PL8516982CBF9FADCC">Instrumenting
Adobe AIR</a></li>
<li><a
href="https://www.youtube.com/watch?v=8kdJDHqiByI&amp;list=PL8516982CBF9FADCC&amp;index=16">HotSpot
Runtime &amp; Java</a></li>
<li><a
href="https://www.youtube.com/watch?v=p5NKcxDny_4&amp;list=PL8516982CBF9FADCC&amp;index=17">PostgreSQL:
Looking Under the Hood with Solaris</a></li>
<li><a
href="https://www.youtube.com/watch?v=SJykRURWgeU&amp;list=PL8516982CBF9FADCC&amp;index=18">PostgreSQL
Provider</a></li>
<li><a
href="https://www.youtube.com/watch?v=oYK1kgFwxk4&amp;index=19&amp;list=PL8516982CBF9FADCC">Distributed
DTrace</a></li>
<li><a
href="https://www.youtube.com/watch?v=OKSuox4eFrk&amp;list=PL8516982CBF9FADCC&amp;index=21">Apple
Port of DTrace</a></li>
</ul></li>
<li><a
href="https://www.youtube.com/watch?v=l_7v7Fn7uMQ&amp;list=PL973D48F273EB0360">dtrace.conf
2012</a>
<ul>
<li><a
href="https://www.youtube.com/watch?v=l_7v7Fn7uMQ&amp;list=PL973D48F273EB0360">DTrace
State of the Union</a></li>
<li><a
href="https://www.youtube.com/watch?v=0QF04ivO_WE&amp;list=PL973D48F273EB0360&amp;index=3">User-Level
CTF</a></li>
<li><a
href="https://www.youtube.com/watch?v=CqLcj0lVnp4&amp;index=4&amp;list=PL973D48F273EB0360">Dynamic
Translators</a></li>
<li><a
href="https://www.youtube.com/watch?v=6NqV_Uj8Ba4&amp;index=7&amp;list=PL973D48F273EB0360">Clang
Parser for DTrace</a></li>
<li><a
href="https://www.youtube.com/watch?v=XD5hdaWnQM4&amp;index=8&amp;list=PL973D48F273EB0360">Visualizations</a></li>
<li><a
href="https://www.youtube.com/watch?v=3Sqa8mmtnMM&amp;index=9&amp;list=PL973D48F273EB0360">Visualizations,
Enabling Toolchain for Seamless USDT</a></li>
<li><a
href="https://www.youtube.com/watch?v=-B6u6wY3Iro&amp;index=10&amp;list=PL973D48F273EB0360">More
Visualizations</a></li>
<li><a
href="https://www.youtube.com/watch?v=0ZMvSh7lUdM&amp;list=PL973D48F273EB0360&amp;index=11">DTrace
in Node.js</a></li>
<li><a
href="https://www.youtube.com/watch?v=4Si-7nAic2c&amp;list=PL973D48F273EB0360&amp;index=12">DTrace
and Erlang</a></li>
<li><a
href="https://www.youtube.com/watch?v=NElog3MvUC8&amp;list=PL973D48F273EB0360&amp;index=13">DTrace
on Linux</a></li>
<li><a
href="https://www.youtube.com/watch?v=m_V7yrrn49Y&amp;index=14&amp;list=PL973D48F273EB0360">ZFS
Provider</a></li>
<li><a
href="https://www.youtube.com/watch?v=s5PpSiPfSNI&amp;index=15&amp;list=PL973D48F273EB0360">DTrace
on FreeBSD</a></li>
<li><a
href="https://www.youtube.com/watch?v=P95LHZ-WOWw&amp;index=16&amp;list=PL973D48F273EB0360">Barriers
to DTrace Adoption</a></li>
</ul></li>
<li><a
href="https://www.joyent.com/about/events/2016/dtrace-conf">dtrace.conf
2016</a>
<ul>
<li><a
href="https://player.vimeo.com/video/173346406">Introduction</a></li>
<li><a href="https://player.vimeo.com/video/173346405">(Useful!) DTrace
intro</a></li>
<li><a href="https://player.vimeo.com/video/173346404">CTF
Everywhere!</a></li>
<li><a href="https://player.vimeo.com/video/173346403">Distributed
DTrace</a></li>
<li><a href="https://player.vimeo.com/video/173346402">DTracign
Apps</a></li>
<li><a href="https://player.vimeo.com/video/173346401">DTrace and JSON:
Together at last!</a></li>
<li><a href="https://player.vimeo.com/video/173346400">ASSERT() as a
DTrace probe (and why I need some help)</a></li>
<li><a href="https://player.vimeo.com/video/173346399">Implementing (or
not) fds[] in FreeBSD</a></li>
<li><a
href="https://player.vimeo.com/video/173346398">OpenDTrace</a></li>
<li><a href="https://player.vimeo.com/video/173300658">DTrace
Performance Improvements with Always-on Instrumentation</a></li>
<li><a href="https://player.vimeo.com/video/173300657">D language
improvements</a></li>
<li><a href="https://player.vimeo.com/video/173300656">D Syntactic
Sugar</a></li>
<li><a href="https://player.vimeo.com/video/173300655">DTrace and
Go</a></li>
<li><a href="https://player.vimeo.com/video/173300654">DTrace and
Postgres</a></li>
<li><a href="https://player.vimeo.com/video/173300653">DTrace in the
Zone</a></li>
<li><a href="https://player.vimeo.com/video/173300651">DTrace ustack()
performance improvements</a></li>
<li><a href="https://player.vimeo.com/video/173300650">DTrace
Exploitation</a></li>
</ul></li>
</ul>
<h2 id="software">Software</h2>
<p>List of software with DTrace support.</p>
<h3 id="programming-languages">Programming languages</h3>
<h4 id="erlang">Erlang</h4>
<ul>
<li><a
href="http://erlang.org/doc/apps/runtime_tools/DTRACE.html">Erlang</a> -
DTrace and Erlang/OTP.</li>
</ul>
<h4 id="lua">Lua</h4>
<ul>
<li><a href="https://github.com/chrisa/lua-usdt">lua-usdt</a> - Libusdt
bindings for Lua.</li>
</ul>
<h4 id="node.js">Node.js</h4>
<ul>
<li><a
href="https://github.com/chrisa/node-dtrace-provider">node-dtrace-provider</a>
- Native DTrace probes for Node.js apps.</li>
</ul>
<h4 id="perl">Perl</h4>
<ul>
<li><a
href="https://github.com/chrisa/perl-Devel-DTrace-Provider">perl-Devel-DTrace-Provider</a>
- Perl wrapper for libusdt.</li>
</ul>
<h4 id="php">PHP</h4>
<ul>
<li><a
href="https://secure.php.net/manual/en/features.dtrace.dtrace.php">PHP</a>
- Using PHP and DTrace.</li>
</ul>
<h4 id="python">Python</h4>
<ul>
<li><a href="https://www.jcea.es/artic/python_dtrace.htm">Python</a> -
DTrace patch for Python 2.7.x and 3.x.</li>
<li><a href="https://github.com/nshalman/python-usdt">python-usdt</a> -
Libusdt bindings for Python.</li>
</ul>
<h4 id="ruby">Ruby</h4>
<ul>
<li><a
href="http://ruby-doc.org/core-2.3.1/doc/dtrace_probes_rdoc.html">Ruby</a>
- Ruby DTrace probes.</li>
<li><a href="https://github.com/kevinykchan/ruby-usdt">ruby-usdt</a> -
Native DTrace probes for ruby apps.</li>
</ul>
<h3 id="databases">Databases</h3>
<ul>
<li><a
href="https://dev.mysql.com/doc/refman/5.7/en/dba-dtrace-mysqld-ref.html">MySQL</a>
- MySQL DTrace probes.</li>
<li><a
href="https://www.postgresql.org/docs/current/static/dynamic-trace.html">PostgreSQL</a>
- PostgreSQL DTrace probes.</li>
</ul>
<h3 id="webservers">Webservers</h3>
<ul>
<li><a href="https://github.com/davepacheco/mod_usdt">mod_usdt</a> -
“httpd” DTrace provider.</li>
</ul>
<h3 id="visualization">Visualization</h3>
<ul>
<li><a href="https://github.com/brendangregg/FlameGraph">FlameGraph</a>
- Stack trace visualizer.</li>
<li><a href="https://github.com/joyent/node-stackvis">node-stackvis</a>
- Stack trace visualizer.</li>
</ul>
<h2 id="tools">Tools</h2>
<ul>
<li><a
href="http://www.brendangregg.com/dtracetoolkit.html">DTraceToolkit</a>
- A collection of useful documented DTrace scripts.</li>
<li><a
href="https://github.com/brendangregg/dtrace-cloud-tools">dtrace-cloud-tools</a>
- DTrace tools written for the SmartOS/SmartDataCenter cloud
(illumos-based).</li>
<li><a href="https://github.com/joyent/pgsqlstat">pgsql tools</a> -
Report top-level PostgreSQL stats.</li>
<li><a href="https://github.com/davepacheco/portsnoop">portsnoop</a> -
Trace event port activity.</li>
<li><a href="https://github.com/richardelling/tools">storage tools</a> -
Report NFS, CIFS and iSCSI stats.</li>
</ul>
<h2 id="community">Community</h2>
<ul>
<li><a href="http://dtrace.org">Community site</a> - DTrace community
site.</li>
<li><a href="http://dtrace.org/blogs/mailing-list/">Mailing list</a> -
DTrace community mailing list.</li>
<li><a
href="https://lists.freebsd.org/mailman/listinfo/freebsd-dtrace">FreeBSD
DTrace mailing list</a> - FreeBSD DTrace community mailing list.</li>
<li><a href="http://chinadtrace.org/">China DTrace</a> - A Chinese
DTrace site.</li>
</ul>
<h2 id="contributing">Contributing</h2>
<p>Contributions are more than welcome! Please see <a
href="https://github.com/xen0l/awesome-dtrace/blob/master/CONTRIBUTING.md">contribution
guidelines</a> first.</p>