[lttng-dev] [RELEASE] LTTng-Tools 2.7.0 - Herbe à Détourne

Jérémie Galarneau jeremie.galarneau at efficios.com
Fri Sep 25 01:11:14 EDT 2015


Hi everyone!

I am proud to announce the availability of LTTng-Tools 2.7 - "Herbe à
Détourne". As is tradition, this release bears the codename of a
Québec-brewed beer.

--- Herbe à Détourne ---
Brewed with unrestrained amounts of Citra hop, the Herbe à Détourne is
a fantastic New World Tripel brewed by "Dieu du Ciel!". Aromas of
mango, cantaloupe melon and passion fruit, combined with a controlled
bitter finish, unite to make this smooth golden-orange beer stand
apart.

Since the second release candidate was released last week, a handful
of minor fixes have made their way into the stable-2.7 branch.

2015-09-24 lttng-tools 2.7.0 (National Punctuation Day)
        * Fix: Handle EINTR of waipid in run-as worker
        * Fix: Handle EINTR of waitpid when spawning a session daemon
        * Add a LOG() macro which handles dynamic severity levels
        * Fix: tests: support systems where PAGE_SIZE is not 4096
        * Test: jul/log4j: use -a instead of '*' to disable all events
        * Reword warning on event disable
        * Clean-up: Remove unused test launchers
        * Help: add -j -l -p option to help string
        * man: update disable-event section
        * Use empty event name on disable -a for ust and agent domain
        * Fix: disable kernel event based on name and event type
        * Tests: Clean-up test-crash on SIGTERM and SIGINT
        * Fix: Possible dereference of null pointers
        * Fix: Break out of loop when searching for a domain's agent
        * Fix: int printed as uint
        * Fix: add subdir-objects to Makefile.am
        * Fix: tests: skip UST perf tests if not root

We will be releasing a blog post to showcase LTTng 2.7's new features
and updating the official documentation within the next few days. In
the meantime, here is a quick rundown of the new features!

--- Process (PID) Tracker ---
The new "track" and "untrack" commands allows the tracking of events
associated with specific PIDs, both in user space and kernel space.

For example, the following commands may be used to track all user
space events of PID "1234":
$ lttng create my_session
$ lttng track --userspace --pid 1234
$ lttng enable-event --userspace --all
$ lttng start

--- Python Logging Support ---
Following in the footsteps of the Java Util Logging and Log4J logging
backend support, which were introduced as part of LTTng 2.4 and LTTng
2.6 respectively, this new version adds support for the Python logging
backend. This means that logging statements emitted by the Python
logging module can now be collected as part of user space traces by
enabling events from the "python" domain.

$ lttng create my_session
$ lttng enable-event --python --all
$ lttng start

The lttngust Python module is provided as part of LTTng-UST 2.7.
https://github.com/lttng/lttng-ust/tree/master/liblttng-ust-python-agent

--- Kernel tracer filtering support ---
While LTTng-UST has provided support for event filtering for a long
time, it was not possible to perform kernel-side event filtering until
now. As of this version, kernel space filters can be used in the same
way as user space filters.

For instance, to trace only read() syscalls requesting more than 100 bytes:
$ lttng create my_session
$ lttng enable-event --kernel --syscall read --filter "count > 100"
$ lttng start

--- Kernel tracer wildcard support ---
Support for wildcards in event names is another feature that has been
brought from the user space tracer to the kernel tracer. This means
that groups of kernel space events can be enabled at once using the
wildcard notation.

The tracing of all block device or scheduling events can be enabled
using a single command:

$ lttng enable-event --kernel block*
or
$ lttng enable-event --kernel sched*

--- File-backed user space buffers ---
This new LTTng-UST feature allows the mapping of ring buffers onto filesystems.
This proves useful in combination with pramfs or DAX+pmem (Linux
kernels 4.1+ for DAX and 4.2+ for pmem) to store tracer ring buffers
in persistent memory upon an unexpected system reboot.

These buffers can be salvaged and converted to regular CTF traces
using the newly introduced lttng-crash utility to see the events that
led to a crash.

--- Support for clock and getcpu plugins ---
In the interest of keeping LTTng as unintrusive as possible, LTTng 2.7
introduces support for platform-specific plug-ins providing custom
implementations of getcpu() (user space) and clock sources for both
kernel and user space tracers.

getcpu override plugins can prove useful in cases where direct
hardware access is available for architecture-specific registers
storing the CPU number, and where those should be used instead of the
Linux kernel sched_getcpu() vDSO/syscall.

clock override plugins, which may be implemented as shared objects
(user space) or kernel modules (kernel space) may prove userful in
cases where direct hardware access to architecture-specific clocks is
available, and when it should be used in place of the Linux kernel
monotonic clock.

--- tracelog() support ---
LTTng-UST 2.7 provides a number of facilities to smoothen the
transition of applications from logging to tracing in the form of
tracelog() tracepoints. LTTng-UST 2.7's announcement covers this
feature in more detail:
http://lists.lttng.org/pipermail/lttng-dev/2015-July/024757.html

As always, please report any issue you may encounter to bugs.lttng.org
or on this mailing list.

Project website: https://lttng.org

Download link: https://lttng.org/files/lttng-tools/lttng-tools-2.7.0.tar.bz2
GPG sig: https://lttng.org/files/lttng-tools/lttng-tools-2.7.0.tar.bz2.asc

Looking forward to your feedback!
Jérémie

-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list