[erlang-questions] Erlang tracing

Knut Nesheim knutin@REDACTED
Wed Sep 30 11:05:06 CEST 2015

On Mon, 21 Sep 2015 at 10:52 Lukas Larsson <lukas@REDACTED> wrote:

> To set the scope of the discussion, when I say tracing I include; erlang
> tracing, dtrace/systemtap, trace outputs (stdout/file/IP), filtering
> through match specs, sequence tracing, tool integration (dbg, fprof,
> redbug, recon to mention some) and probably more.

I've spent many hours trying to build "always on" instrumentation tools,
that you can even run in busy production systems. The biggest challenge in
Erlang compared to other languages / virtual machines is that it's more or
less impossible to follow the execution of a request due to the "use
processes for everything" designs many systems adopt. seq_trace has the
potential to help with this without requiring changes to code, but falls on
it's face as soon as a process talks to a port driver, which happens all
the time in most systems.

If after calling gen_tcp:send/receive the seq_trace token is still around,
it would be possible to build such an instrumentation tool.

If the seq_trace token could be transferred as part of a message to another
node, that would be incredibly useful.

To give some context, New Relic provides agent libraries for many languages
and relies on thread locals to trace typically a HTTP request as it calls
different libraries, different databases, etc. This agent periodically
sends aggregated data back to New Relic, which has a nice web app where you
can view what is going on inside your systems.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150930/a3173be2/attachment.htm>

More information about the erlang-questions mailing list