From ca3fb06a495dcfc02b284274d59bdef1d47e53e7 Mon Sep 17 00:00:00 2001 From: compudj Date: Wed, 21 Jan 2009 22:14:53 +0000 Subject: [PATCH] ust update git-svn-id: http://ltt.polymtl.ca/svn@3239 04897980-b3bd-0310-b5e0-8ef037075253 --- .../lttv/doc/developer/{ust.txt => ust.html} | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) rename trunk/lttv/doc/developer/{ust.txt => ust.html} (71%) diff --git a/trunk/lttv/doc/developer/ust.txt b/trunk/lttv/doc/developer/ust.html similarity index 71% rename from trunk/lttv/doc/developer/ust.txt rename to trunk/lttv/doc/developer/ust.html index a379e553..3fb0c444 100644 --- a/trunk/lttv/doc/developer/ust.txt +++ b/trunk/lttv/doc/developer/ust.html @@ -1,5 +1,13 @@ -LTTng User-space Tracing Design + + + + LTTng User-space Tracing Design + + +

LTTng User-space Tracing Design

+ +

A user-space application may contain static instrumentation, and be linked with an associated runtime library, in order to produce an execution trace. User space Tracepoints and Markers, analogous to Kernel Tracepoints and Markers, @@ -7,6 +15,7 @@ define program locations and arguments provided. Probes may then be connected to each Tracepoint and Marker before they are activated. The probes will typically call LTTng user-space event writing functions. +

When the instrumented application starts, a pipe is opened to allow external tracing control, asynchronous notification is requested when commands arrive in the pipe, and a signal handler is installed for SIGIO (or a carefully chosen @@ -14,24 +23,26 @@ chainable signal number). Every time such signal is received, the runtime library checks for commands received on the external tracing control pipe. The recognized commands are: -- list the available Markers and Tracepoints; -- dynamically load a library (presumably containing probes to connect); -- connect a probe to a Tracepoint or Marker; -- activate a Tracepoint or Marker; -- initialize the tracing buffers; -- flush the tracing buffers; -- finalize the tracing buffers; +

  • list the available Markers and Tracepoints; +
  • dynamically load a library (presumably containing probes to connect); +
  • connect a probe to a Tracepoint or Marker; +
  • activate a Tracepoint or Marker; +
  • initialize the tracing buffers; +
  • flush the tracing buffers; +
  • finalize the tracing buffers; +

    The application may also spontaneously provide information to the pipe: -- a buffer is full; -- new tracepoints or markers are appearing or disappearing, because modules are +

  • a buffer is full; +
  • new tracepoints or markers are appearing or disappearing, because modules are dynamically loaded or unloaded; +

    In addition, the tracing control application should be notified when the application exits (to save the content of buffers if the application is crashing). Such notification may be obtained through utrace. - +

    This tracing scheme plans to use a direct function call to tracing into buffers mapped in user-space. This should be an order of magnitude faster than the current Dtrace implementation (c.f. @@ -39,4 +50,5 @@ https://ltt.polymtl.ca/tracingwiki/index.php/DTrace) which uses a breakpoint to perform both dynamic and static user-space tracing. Performance comparison of a function call vs the int3 approach is available at http://sourceware.org/ml/systemtap/2006-q3/msg00793.html (see "Conclusion"). - + + -- 2.34.1