Overview

The LTTng project aims at providing highly efficient tracing tools for Linux. Its tracers help tracking down performance issues and debugging problems involving multiple concurrent processes and threads. Tracing across multiple systems is also possible.

Apart from LTTng's kernel tracer and userspace tracer, viewing and analysis tools are part of the project. The LTTV viewer permits to analyze and show traces, both in text format and graphically.

LTTng's performance relies on techniques such as Userspace RCU, lockless algorithms, per-cpu data structures and cache impact minimization.

Getting started with LTTng 2.x

Start by looking at the LTTng 2.x page to find out how to deploy LTTng 2.x on your system or you can go directly to the Download section.

Project Updates

LTTng-tools 2.2.0 RC2

Quite a lot of fixes went into this release. For more information, see the changelog.

One thing worth noting is that now the lttng UI will round up subbuffer size to the next power of 2 if needed and warn you about it. Here is an example with enable-channel:

$ lttng enable-channel --subbuf-size 15000 chan1 -u
Warning: The subbuf size (15000) is rounded to the next power of 2 (16384)

Changelog

Available in the Download section.

LTTng-UST 2.2.0-rc2

A few fixes went into this release: ABI fixes between 2.1 and 2.2, provider compatibility check and a timer management synchronization fix. Also a few optimisation for tracepoint callsite lookup were added.

Changelog:
2013-05-09 lttng-ust 2.2.0-rc2

  • manpage: Document probe provider compatibility
  • Fix: add provider ABI compatibility check
  • Cleanup: ignore mktemp return value
  • Cleanup: documentation: argument vs field
  • Documentation: document undefined behavior for NULL pointers
  • Cleanup: silence cppcheck error
  • Fix: add internal mutex for timer
  • 32-bit warning fix for cyg profile fast
  • Fix warnings for 32-bit in lttng-ust-cyg-profile
  • Typo fix in README
  • Fix: tracepoint.h incorrect assumption about constructor order
  • Cleanup: comment mismatch with code
  • Fix: ABI breakage between 2.1 and 2.2-rc1
  • Documentation: document that sequence len field is unsigned
  • connect: don't report EACCES
  • connect: don't print error on EPERM
  • Bump liblttng-ust-ctl lib version major number
  • Optimisation: implement callsite hash table in tracepoint.c
  • Optimisation: only update added library in tracepoint.c
  • Optimisation: only fix pending events once per lazy update
  • Available in the Download section.

    LTTng-modules 2.2.0-rc2

    A few fixes went into this release, mostly kernel 3.9 block layer instrumentation fixes and a vmalloc failure fix on ARM systems.

    Changelog:
    2013-05-09 LTTng modules 2.2.0-rc2

  • Remove useless lttng_metadata probe
  • Fix: warning kvm_trace_exit_reason redefined for 3.9 kernel
  • Fix: 3.9.0 block layer instrumentation build
  • Revert "Stop build if CONFIG_TRACEPOINTS is not set"
  • Stop build if CONFIG_TRACEPOINTS is not set
  • Add comments to endifs.
  • Fix: remove ARM set_tls system call override
  • Cleanup: arm sys_mmap whitespace
  • Clean up using global_dirty_limit wrapper for writeback probe
  • Available in the Download section.

    LTTng officially accepted to Google Summer of Code 2013!

    The LTTng team is thrilled to announce that our organization has been officially accepted to Google Summer of Code 2013!

    Interested students can consult the ideas list on the LTTng Google Summer of Code 2013 Wiki to get familiar with the proposed projects and begin to interact with the community and craft their proposal.

    More information on Google Summer of Code 2013: GSoC 2013 Website

    LTTng-modules 2.2.0 RC1

    Noteworthy changes:
    - Many new subsystems are instrumented. Thanks to Mentor Graphics for
    the patches.

    Changelog:
    2013-03-29 LTTng modules 2.2.0-rc1

  • Update README
  • Fix: vmscan instrumentation build
  • writeback instrumentation: remove duplicated structures
  • block: update instrumentation to 3.9 rc kernel
  • rcu: update to 3.9 rc kernel instrumentation
  • workqueue instrumentation: remove duplicated structures
  • Rename odd event names
  • Introduce API to remap event names exposed by LTTng
  • lttng-module: sched.h: Fix compilation on 3.9 kernel
  • Fix Linux 3.8 btrfs probe warning
  • Fix Linux 3.8 ext4 probe support
  • Fix 3.8 kernel support: namespace lttng_is_signed_type()
  • Fix: don't flush-final for offset 0 if reader is on sub-buffer
  • instrumentation sched: add missing fork pid info
  • Fix check in lttng_strlen_user_inatomic
  • instrumentation: sync with Linux commit a1ce392
  • Fix: statedump: missing locking, use lttng_iterate_fd
  • Implement lttng_iterate_fd wrapper
  • Instrumentation cleanup: kmem events should print hex pointers
  • Fix compilation of ext4 and btrfs tracepoints on 2.6.40 kernels
  • Fix: statedump hang/too early completion due to logic error
  • Fix: statedump hang due to incorrect wait/wakeup use
  • put_ulong calls in lib_ring_buffer_compat_ioctl() should be compat
  • wrapper/perf.h: Fix kernel version condition
  • Add new kernel probes instrumentation
  • Update kernel probes to more detailed match to kernel versions
  • Fix possible kernel build errors with linux-patches
  • Add missing MIT license text to 3 files under this license
  • Update sites using kernel version checking macro to new range
  • Make upper bound of kernel version checking macro exclusive
  • sock instrumentation: fix fields to get referenced values
  • ext3 instrumentation: fix of assignment code conversion
  • sched instrumentation: rename "pid" fields in sched_process_exec
  • Remove remaining semicolons in TP_fast_assign blocks
  • Fix compilation for 3.0 kernels that are named 2.6.40
  • Fix compilation for 3.0 branch (>= 3.0.39)
  • Add kernel version checking macro
  • Remove semicolons in TP_fast_assign blocks
  • Add ifdefs to net probe to support Linux 2.6.39
  • Add kernel probes for supplementary subsystems
  • Check if interrupt action name is not null in statedump
  • Fix exec instrumentation: only for kernels 3.4.0 and higher
  • Add TRACE_EVENT(sched_process_exec) to sched.h
  • lib/ringbuffer/frontend_api.h: Include linux/prefetch.h.
  • Fix warning with 3.6.0 kernel
  • ABI with support for compat 32/64 bits
  • Perform calculation on bit size in 64-bit
  • Use uint64_t for packet header content size and packet size
  • Fix: compat layer only on supported architectures
  • Fix ring buffer 32/64 bits compat
  • Fix cleanup: move lttng-tracer-core.h include to lib ringbuffer config.h
  • Fix ring_buffer_frontend.c: missing include lttng-tracer-core.h
  • Fix: statedump missing check for NULL namespace
  • Available in the Download section.

    LTTng-tools 2.2.0 RC1

    Introducing "Cuda", the 2.2.0-rc1 release. Use "lttng version" for a
    full description of the codename.

    We are now in feature freeze for 2.2 and this is the release candidate
    1. Some bugs are still in the pipe in the bug tracker but the new
    features are now usable and ready for your precious testing! The
    following ChangeLog lists what was added in this version.

    2013-03-28 lttng-tools 2.2.0-rc1

  • Add UST per UID buffers support
  • UST metadata generation are created on the sessiond side
  • Move LTTng-UST buffer ownership from application to consumer
  • Add a UST registry of events and channel in the sessiond
  • UST periodical metadata flush
  • Refactor tests to use prove and tap
  • Support for trace file rotation for the relayd and on disk
  • Support per-context filtering
  • Add channel wakeup fd to monitor close
  • Deprecate enable/disable-consumer
  • Multiple fixes and memory leak fix.
  • The major addition is the UST per UID buffers which can be used like this:

    $ lttng create
    $ lttng enable-channel chan1 -u --buffers-uid

    From this point on, the session only support per UID channel. Per PID
    and per UID buffers can NOT coexist.

    $ lttng enable-event -a -u -c chan1
    $ lttng start
    ...

    Every application sharing the same UID will use the same buffers.

    Furthermore, you can now set the attributes of the channel metadata.
    This is particularly useful with the periodical flush that was added for
    the metadata. For instance:

    $ lttng enable-channel metadata --switch-timer 200000 -u

    Also, the buffers for UST application are now created in the consumer
    and passed to the application. Thus, the buffer ownership has been
    transfered from the UST tracer to the consumer.

    Finally, the new feature worth noting is the trace file rotation. The -C
    and -W option are added to the enable-channel command and control the
    maximum size of trace files and the maximum number of them. See man
    lttng.1 for more details.

    Available in the Download section.

    LTTng-UST 2.2.0 RC1

    Major new features:
    - Per context filtering (vtid, vpid, procname) with e.g.
    --filter 'procname=="apache2"'
    - Buffers shared across applications with same user id e.g.
    lttng enable-channel -u mychan --buffers-uid
    - Implement --switch-timer and --read-timer options (periodical flush
    and RT-awareness).
    - Function entry/exit tracing (see lttng-ust-cyg-profile(3) manpage).

    Release name: Cuda

    Description (Cuda):
    Brewed at the Benelux microbrewery, this IPA has huge floral, citric and
    resinous hop aroma, simply an amazing nose. The flavor is very fresh
    with a light caramel malting touch completing a strong body. Huge
    amounts of hops, lots of grapefruit, lemon and oranges. This is an
    outstanding IPA!

    Changelog:
    2013-03-28 lttng-ust 2.2.0-rc1

  • Fix: tracepoint instrumentation constructor order issue
  • Documentation: update 2.0 to 2.x
  • Add demo test back as an example
  • Don't rely on explicit context for filtering
  • Implement per-context filtering
  • Fix: filter string comparison should check for literal
  • update tests/demo readme file
  • Add man page for lttng-ust-cyg-profile
  • Fix: filter string wildcard comparison
  • Fix: Remove test runner script
  • Fix: forwarding of call_site argument to field
  • Add demo README
  • Tests: Use Perl prove as the testsuite runner
  • Remove tests depending on consumerd
  • Convert hello.cxx test to a build test
  • Clean-up of configure.ac and tests/Makefile.am
  • Fix snprintf test and output result to TAP format
  • Replace same_line_marker test with same_line_tracepoint
  • Remove tests-libustinstr-malloc
  • Remove exit-fast test
  • Remove fork test
  • Remove daemon test
  • Remove demo test
  • Remove outdated test-nevents test
  • Remove outdated simple_include test
  • Remove outdated register_test test
  • Convert hello-static-lib test to a build test
  • Convert hello test to a build test only
  • Remove outdated libustctl_function_tests test
  • Remove outdated test hello2
  • Remove outdated dlopen test
  • Remove outdated test basic long
  • Remove outdated test basic
  • cyg_profile: implement fast and verbose .so
  • Performance: add unlikely to tracepoint dynamic linking test
  • Fix: _LGPL_SOURCE rcu dereference fix
  • Implement liblttng-ust-cyg-profile function entry/exit instrumentation
  • Minor fix: libc wrapper internal run script
  • Fix: ustctl_recv_register_event pointer mixup
  • Fix: allow enabling same events for two channels
  • Add channel ID field to attr
  • Remove useless else clause
  • tracepoint: move "probe" test outside of loop
  • Fix uninitialized has_loglevel variable
  • Fix clang warnings
  • Cleanup: work-around clang unused result warning
  • Cleanup compile warning
  • Cleanup: remove unused variables
  • tracepoint: Don't add NULL probes
  • Remove mention of locking issues associated with dlopen usage
  • Implement read timer (for RT)
  • Only flush when there are readers active
  • Add mutex for channel wakeup fd update
  • Fix: fields should be initialized to NULL
  • Implement ustctl_duplicate_ust_object_data
  • Add channel wakeup fd to monitor close
  • Fix: refcount issue in lttng-ust-abi.c
  • Fix: only consumerd should print errors
  • Implement ring buffer periodic buffer switch timer
  • Fix: ensure all probe providers have their symbols
  • Reactivate error printing
  • Unregister tracepoint probes when not needed
  • Cleanup: remove now unused metadata code from UST
  • Fix: notification timeout logic
  • Fix: don't print error in comm proto connect on ENOENT
  • Fix: return expected error return values for sessiond
  • Fix: set wait/wake fd to -1 before close
  • Fix: Only notify socket should have timeout/nonblock
  • Fix: ustctl: return -EPIPE to sessiond if connection is closed
  • Fix: Add timeout on notification socket
  • Remove now unused metadata printf code
  • Move metadata creation into lttng-sessiond and lttng-consumed
  • Add write metadata API to ust-ctl.h
  • Move UST registry into sessiond and implement notifiers
  • Fix: don't flush-final for offset 0 if reader is on sub-buffer
  • Use tp rcu link test in provider
  • Remove direct dependency of probes on urcu-bp
  • Use urcu tls-compat.h
  • Lazy provider registration
  • Always use lttng_get_probe_list_head to get probe list
  • Fix static build
  • Move LTTng-UST buffer ownership from application to consumer
  • Fix package: don't distribute generated headers
  • Fix: don't cancel already exited threads
  • Scalability fix: tracepoint.c hash table size increase
  • Scalability fix for many events: event hash table size
  • Speed up probe registration for large amount of events
  • Add missing demo-trace shell script to dist tarball
  • Documentation: add uuid package name for Fedora in README
  • Fix: missing test for lttng_ust_comm_should_quit in lttng-ust-comm.c
  • Add compilation support for Tile architectures
  • Documentation: clarify debian package name for uuid in README
  • Fix: comment in ust-ctl.h
  • Fix I/O-related error values in ustctl
  • Introduce hash table for lttng_create_event_if_missing()
  • Fix: don't build C++ example if a C++ compiler isn't available
  • Remove LIBFORMAT output in configure.
  • Document dependency on libuuid
  • Available in the Download section.

    LTTng UST 2.1.2

    Minor fixes.

    Changelog:
    2013-03-25 lttng-ust 2.1.2

  • Fix uninitialized has_loglevel variable
  • tracepoint: Don't add NULL probes
  • Remove mention of locking issues associated with dlopen usage
  • Fix: refcount issue in lttng-ust-abi.c
  • Fix: don't flush-final for offset 0 if reader is on sub-buffer
  • Use tp rcu link test in provider
  • Remove direct dependency of probes on urcu-bp
  • Fix package: don't distribute generated headers
  • Fix: don't cancel already exited threads
  • Scalability fix: tracepoint.c hash table size increase
  • Scalability fix for many events: event hash table size
  • Speed up probe registration for large amount of events
  • Add missing demo-trace shell script to dist tarball
  • Fix: missing test for lttng_ust_comm_should_quit in
  • lttng-ust-comm.c
  • Documentation: clarify debian package name for uuid in README
  • Document dependency on libuuid
  • Fix: comment in ust-ctl.h
  • Fix I/O-related error values in ustctl
  • Available in the Download section.

    Babeltrace 1.1.0

    Noteworthy changes:

    We had to make important namespacing changes to the user-visible API
    between babeltrace 1.0.x and 1.1.0 in order to ensure libbabeltrace does
    not clash with external project symbols and types.

    Changelog:
    2013-03-23 Babeltrace 1.1.0

  • Reinsert "at end of stream" message for discarded events
  • Improvement: Message from babeltrace concerning discarded events needs improvement
  • Cleanup: typo fix
  • Cleanup: add end of line at end of verbose message
  • Fix: misleading message from babeltrace --verbose
  • Fix: babeltrace --fields all overrides --no-delta
  • Add verbosity to stream id error message
  • Fix: Ensure the specified input format is CTF
  • Fix: Undefined behavior of double free on strlist in get_names_args
  • Fix: ctf-text: don't close stdout
  • Fix: warning message for unexpected trace byte order
  • Namespace the struct declaration
  • Namespace the struct definition
  • Namespace the struct format
  • Namespace the struct mmap_stream
  • Namespace the struct trace_descriptor
  • Namespace struct stream_pos
  • Namespace compliance for dependencies function
  • Cleanup error messages
  • Fix: babeltrace: make '-w' actually work
  • Convert the unit tests to the TAP format
  • Spelling cleanups within comments
  • Move the bitfield test to tests/lib/
  • Fix: Added a null pointer check to bt_ctf_field_name
  • Add babeltrace.pc to gitignore
  • namespacing: place flex/bison symbols under bt_yy namespace
  • namespace the lookup_integer function
  • namespace the definition functions
  • namespace the variant functions
  • namespace the declaration functions
  • namespace the collection functions
  • namespace the heap functions
  • namespace the struct functions
  • namespace the string functions
  • namespace the sequence functions
  • namespace the int functions
  • namespace the enum functions
  • namespace definition_ref and definition_unref
  • namespace declaration_ref and declaration_unref
  • namespace the array functions
  • namespace the scope_path functions
  • Hide internal functions of libbabeltrace-ctf
  • Hide internal functions of ctf-text
  • BT_HIDDEN macro
  • Namespace the lookup_enum function
  • Available in the Download section.

    LTTng and Google Summer of Code 2013

    The LTTng project is hoping to participate in the Google Summer of Code 2013. Mentoring organisation will be notified of their acceptance in the program on April 8 2013.

    Meanwhile, interested students can consult the ideas list on the LTTng Google Summer of Code 2013 Wiki to get familiar with the proposed projects and begin to interact with the community and craft their proposal.

    More information on Google Summer of Code 2013: GSoC 2013 Website

    Syndicate content