This repo is a mirror of the official lttng-modules git found at git://git.lttng.org/lttng-modules.git. The LTTng modules provide Linux kernel tracing capability to the LTTng 2.x tracer toolset.
Clone or download
mjeanson and compudj Fix: timer instrumentation for RHEL 7.6
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Latest commit a2e303c Dec 6, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSES Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
extra_version Add extra version information framework Jul 5, 2018
instrumentation Fix: timer instrumentation for RHEL 7.6 Dec 6, 2018
lib Drop support for kernels < 3.0 from lib Nov 8, 2018
probes Add missing SPDX license identifiers to uprobes Nov 8, 2018
scripts Fix: Allow alphanumeric characters in SLE version Aug 9, 2018
tests Drop kstrtox.h wrapper Nov 8, 2018
wrapper Add missing SPDX license identifiers to uprobes Nov 8, 2018
.gitignore Add extra version information framework Jul 5, 2018
ChangeLog Version 2.10.0-rc1 May 6, 2017
CodingStyle Add coding style document May 30, 2012
Kbuild.common Cleanup: move scripts to subdirectory Jul 5, 2018
Kconfig Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
LICENSE Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
Makefile Drop support for kernels < 3.0 from Makefiles Nov 8, 2018
README.md Bump minimum kernel version to 3.0 Nov 8, 2018
TODO Mass rename: ltt_*/ltt-* to LTTNG_*/LTTNG-* Jan 22, 2012
filter-bytecode.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-abi-old.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-abi.c Fix: uprobes: missing break in lttng_event_ioctl() Aug 30, 2018
lttng-abi.h uprobe: Support multiple call sites for the same uprobe event Aug 27, 2018
lttng-calibrate.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-clock.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-clock.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-callstack.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-cpu-id.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-hostname.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-interruptible.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-migratable.c Fix: access migrate_disable field directly Sep 26, 2018
lttng-context-need-reschedule.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-nice.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-perf-counters.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-pid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-ppid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-preemptible.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-prio.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-procname.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-tid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-vpid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-vppid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context-vtid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-context.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-cpuhotplug.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-endian.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-events.c Drop uuid.h wrapper Nov 8, 2018
lttng-events.h Drop support for kernels < 3.0 from lttng-events.h Nov 8, 2018
lttng-filter-interpreter.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-filter-specialize.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-filter-validator.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-filter.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-filter.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-kernel-version.h Drop support for kernels < 3.0 from lttng-kernel-version.h Nov 8, 2018
lttng-probes.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-client-discard.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-client-mmap-discard.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-client-mmap-overwrite.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-client-overwrite.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-client.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-metadata-client.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-metadata-client.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-ring-buffer-metadata-mmap-client.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-statedump-impl.c Drop support for kernels < 3.0 from lttng-statedump-impl.c Nov 8, 2018
lttng-string-utils.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-string-utils.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-syscalls.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-tp-mempool.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-tp-mempool.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-tracepoint.c Fix: adapt to kernel relative references Oct 18, 2018
lttng-tracepoint.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-tracer-core.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-tracer.h Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018
lttng-tracker-pid.c Cleanup: move to kernel style SPDX license identifiers Jul 5, 2018

README.md

LTTng-modules

by Mathieu Desnoyers

LTTng kernel modules are Linux kernel modules which make LTTng kernel tracing possible. They include essential control modules and many probes which instrument numerous interesting parts of Linux. LTTng-modules builds against a vanilla or distribution kernel, with no need for additional patches.

Other notable features:

  • Produces CTF (Common Trace Format) natively.
  • Tracepoints, function tracer, CPU Performance Monitoring Unit (PMU) counters, kprobes, and kretprobes support.
  • Have the ability to attach context information to events in the trace (e.g., any PMU counter, PID, PPID, TID, command name, etc). All the extra information fields to be collected with events are optional, specified on a per-tracing-session basis (except for timestamp and event ID, which are mandatory).

Building

To build and install LTTng-modules, you will need to have your kernel headers available (or access to your full kernel source tree), and do:

make
sudo make modules_install
sudo depmod -a

The above commands will build LTTng-modules against your current kernel. If you need to build LTTng-modules against a custom kernel, do:

make KERNELDIR=/path/to/custom/kernel
sudo make KERNELDIR=/path/to/custom/kernel modules_install
sudo depmod -a kernel_version

Kernel built-in support

It is also possible to build these modules as part of a kernel image. Simply run the scripts/built-in.sh script with the path to your kernel source directory as an argument. It will symlink the lttng-modules directory in the kernel sources and add an include in the kernel Makefile.

Then configure your kernel as usual and enable the CONFIG_LTTNG option.

Required kernel config options

Make sure your target kernel has the following config options enabled:

  • CONFIG_MODULES: loadable module support (not strictly required when built into the kernel)
  • CONFIG_KALLSYMS: see files in wrapper; this is necessary until the few required missing symbols are exported to GPL modules from mainline
  • CONFIG_HIGH_RES_TIMERS: needed for LTTng 2.x clock source
  • CONFIG_TRACEPOINTS: kernel tracepoint instrumentation (enabled as a side-effect of any of the perf/ftrace/blktrace instrumentation features)

Supported (optional) kernel config options

The following kernel configuration options will affect the features available from LTTng:

  • CONFIG_HAVE_SYSCALL_TRACEPOINTS: system call tracing:

    lttng enable-event -k --syscall
    lttng enable-event -k -a
    
  • CONFIG_PERF_EVENTS: performance counters:

    lttng add-context -t perf:*
    
  • CONFIG_EVENT_TRACING: needed to allow block layer tracing

  • CONFIG_KPROBES: dynamic probes:

    lttng enable-event -k --probe ...
    
  • CONFIG_KRETPROBES: dynamic function entry/return probes:

    lttng enable-event -k --function ...
    
  • CONFIG_KALLSYMS_ALL: state dump of mapping between block device number and name

Usage

Use LTTng-tools to control the tracer. The session daemon of LTTng-tools should automatically load the LTTng kernel modules when needed. Use Babeltrace to print traces as a human-readable text log.

Support

Linux kernels >= 3.0 are supported.

Notes

About perf PMU counters support

Each PMU counter has its zero value set when it is attached to a context with add-context. Therefore, it is normal that the same counters attached to both the stream context and event context show different values for a given event; what matters is that they increment at the same rate.