[ltt-dev] Introducing the LTTng Userspace Tracer (UST 0.1)

Pierre-Marc Fournier pierre-marc.fournier at polymtl.ca
Mon Jan 18 03:04:42 EST 2010


Hi,

This is to introduce UST, the LTTng UserSpace Tracer). UST is a port to
userspace of the LTTng kernel tracer. Its goal is to provide as fast as
possible userspace tracing.

Version 0.1 can be obtained at the following locations.

The repository:
http://git.dorsal.polymtl.ca/?p=ust.git

The tarballs:
http://lttng.org/files/ust/releases/

The documentation, including a quick start guide:
http://lttng.org/files/ust/manual/ust.html

This release is intended as a preview. Development is still in progress
and documentation is not complete. However, most of the tracing
functionality is usable. Feedback is very welcome.

UST uses the same proven buffering algorithms as the kernel tracer.
Instrumentation is done either with markers or tracepoints. A daemon
gathers the trace data and saves it in the same format as the LTTng
kernel tracer. The trace may then be examined with LTTV or the Eclipse
LTTng trace viewer, which is part of the Eclipse linux-tools project.

UST does _not_ require the LTTng kernel tracer to be installed, nor does
it require special kernel support. It is a mere library (libust).

The licence for the tracing library is LGPL v2.1, so it can be linked to
proprietary applications. The tools are GPL v2.

Currently, it has been tested on Linux, but other operating systems
could theoretically be supported without great effort.

The currently supported platforms are x86-32 and x86-64. Supporting
other platforms should not be difficult.

To view traces produced by UST 0.1, LTTV 0.12.20 (commit d081dd5e8ed60)
must be used. This is because UST still uses trace format 2.3. It will
be upgraded to 2.5 in a future release.


Todos and limitations of this release:

- One line of a given source file cannot contain more than one marker
with a given channel and name. (It may however contain several markers
with different channels or names.)

- Buffers are per process. They need to be changed to per-cpu.

- Some changes in the LTTng kernel tracer need to be ported to UST. The
most notable is the change of trace format from 2.3 to 2.5.

- Add support for UST in the LTTng TCF agent, for sending traces via
network.

- There is currently command-line interface support for flight-recorder
mode.

- In early tracing mode, the only channels that can be used reliably are
"metadata" and "ust". The "usttrace" tool always uses early tracing and
is hence subject to this limitation. Traces setup with the "ustctl" tool
("manual mode") are not subject to this limitation and can contain
channels that have any name.

- When loading a library with dlopen(), in order for markers in the
library to generate events in the trace, these markers must be in the
same channel as an event that was in the executable or its dynamically
linked libraries that were loaded at start time. If using early tracing,
only the "ust" channel can be used.

- Tracing across clone() calls without the CLONE_VM flag (that result in
a child that has a distinct address space from its parent) is not yet
supported.

- Currently, only one trace at a time can be recorded on a given process.

--
Pierre-Marc Fournier






More information about the lttng-dev mailing list