[rabbitmq-discuss] DTrace and Erlang: an update

Scott Lystig Fritchie slfritchie at snookles.com
Mon Oct 24 19:20:45 BST 2011


Hi, all.  I've been a lurker on this list since January 2009.  I thought
it might be time to post something.

I've been working with Dustin Sallings and Michal Ptaszek to expand the
work that they've done on adding DTrace probes to the Erlang virtual
machine.  We have started preliminary, *informal*, **no-promises-yet**
talks with Ericsson's OTP team.  Our goal (and not yet the OTP team's, I
*cannot* speak for them) is to get these probes & NIF code into the R15
release cycle.

I'll be speaking about this DTrace work at the Erlang User Conference in
Stockholm, Sweden on Thursday, November 4th.  If you're going to be at
the EUC and you're interested in DTrace, I'd love to talk to you.  If
you have a war story about RabbitMQ that you'd like me to share at the
EUC (perhaps as part of my presentation), please contact me directly.
FWIW, I'll also be attending the tutorial & hack-a-thon day on Friday
05 November.

If you like DTrace but you're not going to be at EUC, then ... I'd like
to start some email correspondence.  Specifically, what do you need to
make RabbitMQ's workings visible to the outside world via DTrace?

If we actually meet our goal of getting the probes + NIF into the
official R15 source distribution ... then the evolution of the probes
will probably be slow.  Why?  Because it'll be tied to Ericsson's
release schedule.  The more input we get from users of *real* apps
(RabbitMQ, Riak, Ejabberd, et al.) now, the better the initial probes
will be, and the fewer iterations it will take to make them "perfect".

-Scott

P.S.  Sorry like sounding like a telethon fundraiser.  ("We need your
pledge of support *now*.")  But the Erlang/OTP R15 release schedule is
Ericsson's, not mine.  If we want full support for this DTrace work, we
need to play by Ericsson's rules and schedules.

P.P.S. Here's a summary of recent coding developments:

A list of the probes now available is at:

    https://github.com/slfritchie/otp/blob/dtrace-experiment+michal2/erts/emulator/beam/erlang_dtrace.d

... and a set of small example D scripts:

    https://github.com/slfritchie/otp/tree/dtrace-experiment+michal2/lib/dtrace/examples

In addition, I've added a NIF that allows Erlang code to trigger a
probe.  See the EDoc comments at the top of this source file for some
background:

    https://github.com/slfritchie/otp/blob/dtrace-experiment+michal2/lib/dtrace/src/dtrace.erl

I've created a "shar"-like shell script that will automagically patch
your otp_src_R14B04.tar.gz source tarball with all this DTrace stuff.
See here for details:

    http://erlang.org/pipermail/erlang-questions/2011-October/061933.html

Over the weekend, I added the ability to trace the "sequential trace
token" via DTrace.  That work isn't available in the patch above, but it
is available if you wish by checking out the underlying repo from
GitHub, git://github.com/slfritchie/otp.git, and using the
"dtrace-experiment+michal2" branch.



More information about the rabbitmq-discuss mailing list