The LTTng Documentation
=======================
Philippe Proulx <pproulx@efficios.com>
-v2.8, 20 February 2017
+v2.8, 24 July 2017
include::../common/copyright.txt[]
applications.
[role="growable"]
-.Availability of LTTng{nbsp}{revision} for major Linux distributions as of 2 December 2016.
+.Availability of LTTng{nbsp}{revision} for major Linux distributions as of 14 March 2017.
|====
|Distribution |Available in releases |Alternatives
and Ubuntu{nbsp}16.04 _Xenial Xerus_:
link:/docs/v2.9#doc-ubuntu-ppa[use the LTTng Stable{nbsp}2.9 PPA].
+LTTng{nbsp}2.9 for Ubuntu{nbsp}17.04 _Zesty Zapus_ (not released
+yet).
+
<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
other Ubuntu releases.
other Fedora releases.
|https://www.debian.org/[Debian]
-|<<debian,Debian "stretch" (testing)>>.
-|<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
-previous Debian releases.
+|_Not available_
+|link:/docs/v2.9#doc-debian[LTTng{nbsp}2.9 for Debian "stretch" (testing)
+and Debian "sid" (unstable)].
+
+<<building-from-source,Build LTTng{nbsp}{revision} from source>>.
|https://www.opensuse.org/[openSUSE]
|_Not available_
|_Not available_
|link:/docs/v2.9#doc-arch-linux[LTTng{nbsp}2.9 from the AUR].
+<<building-from-source,Build LTTng{nbsp}{revision} from source>>.
+
|https://alpinelinux.org/[Alpine Linux]
-|<<alpine-linux,Alpine Linux "edge">>.
-|LTTng{nbsp}{revision} for Alpine Linux{nbsp}3.5 (not released yet).
+|_Not available_
+|link:/docs/v2.9#doc-alpine-linux[LTTng{nbsp}2.9 for Alpine Linux "edge"].
-<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
-other Alpine Linux releases.
+<<building-from-source,Build LTTng{nbsp}{revision} from source>>.
|https://www.redhat.com/[RHEL] and https://www.suse.com/[SLES]
|See http://packages.efficios.com/[EfficiOS Enterprise Packages].
|https://buildroot.org/[Buildroot]
|<<buildroot,Buildroot 2016.11>>.
-|<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
+|link:/docs/v2.9#doc-buildroot[LTTng{nbsp}2.9 for Buildroot 2017.02].
+
+<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
other Buildroot releases.
|http://www.openembedded.org/wiki/Main_Page[OpenEmbedded] and
https://www.yoctoproject.org/[Yocto]
|<<oe-yocto,Yocto Project{nbsp}2.2 _Morty_>> (`openembedded-core` layer).
-|<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
+|LTTng{nbsp}2.9 for Yocto Project{nbsp}2.3 _Pyro_
+(`openembedded-core` layer) (not released yet).
+
+<<building-from-source,Build LTTng{nbsp}{revision} from source>> for
other OpenEmbedded releases.
|====
.Java and Python application instrumentation and tracing
====
If you need to instrument and trace <<java-application,Java
-applications>> on openSUSE, you need to build and install
+applications>> on Fedora, you need to build and install
LTTng-UST{nbsp}{revision} <<building-from-source,from source>> and pass
the `--enable-java-agent-jul`, `--enable-java-agent-log4j`, or
`--enable-java-agent-all` options to the `configure` script, depending
on which Java logging framework you use.
If you need to instrument and trace <<python-application,Python
-applications>> on openSUSE, you need to build and install
+applications>> on Fedora, you need to build and install
LTTng-UST{nbsp}{revision} from source and pass the
`--enable-python-agent` option to the `configure` script.
====
-[[debian]]
-=== Debian
-
-To install LTTng{nbsp}{revision} on Debian "stretch" (testing):
-
-. Install the main LTTng{nbsp}{revision} packages:
-+
---
-[role="term"]
-----
-# apt-get install lttng-modules-dkms
-# apt-get install liblttng-ust-dev
-# apt-get install lttng-tools
-----
---
-
-. **If you need to instrument and trace <<java-application,Java
- applications>>**, install the LTTng-UST Java agent:
-+
---
-[role="term"]
-----
-# apt-get install liblttng-ust-agent-java
-----
---
-
-. **If you need to instrument and trace <<python-application,Python
- applications>>**, install the LTTng-UST Python agent:
-+
---
-[role="term"]
-----
-# apt-get install python3-lttngust
-----
---
-
-
-[[alpine-linux]]
-=== Alpine Linux
-
-To install LTTng-tools{nbsp}{revision} and LTTng-UST{nbsp}{revision} on
-Alpine Linux "edge":
-
-. Make sure your system is
- https://wiki.alpinelinux.org/wiki/Edge[configured for "edge"].
-. Enable the _testing_ repository by uncommenting the corresponding
- line in path:{/etc/apk/repositories}.
-. Add the LTTng packages:
-+
---
-[role="term"]
-----
-# apk add lttng-tools
-# apk add lttng-ust-dev
-----
---
-
-To install LTTng-modules{nbsp}{revision} (Linux kernel tracing support)
-on Alpine Linux "edge":
-
-. Add the vanilla Linux kernel:
-+
---
-[role="term"]
-----
-# apk add linux-vanilla linux-vanilla-dev
-----
---
-
-. Reboot with the vanilla Linux kernel.
-. Download, build, and install the latest LTTng-modules{nbsp}{revision}:
-+
---
-[role="term"]
-----
-$ cd $(mktemp -d) &&
-wget http://lttng.org/files/lttng-modules/lttng-modules-latest-2.8.tar.bz2 &&
-tar -xf lttng-modules-latest-2.8.tar.bz2 &&
-cd lttng-modules-2.8.* &&
-make &&
-sudo make modules_install &&
-sudo depmod -a
-----
---
-
-
[[enterprise-distributions]]
=== RHEL, SUSE, and other enterprise distributions
.Java and Python application instrumentation and tracing
====
If you need to instrument and trace <<java-application,Java
-applications>> on openSUSE, you need to build and install
+applications>> on Yocto/OpenEmbedded, you need to build and install
LTTng-UST{nbsp}{revision} <<building-from-source,from source>> and pass
the `--enable-java-agent-jul`, `--enable-java-agent-log4j`, or
`--enable-java-agent-all` options to the `configure` script, depending
on which Java logging framework you use.
If you need to instrument and trace <<python-application,Python
-applications>> on openSUSE, you need to build and install
+applications>> on Yocto/OpenEmbedded, you need to build and install
LTTng-UST{nbsp}{revision} from source and pass the
`--enable-python-agent` option to the `configure` script.
====
* **High event throughput**: In general, prefer bigger sub-buffers to
lower the risk of losing event records.
+
-Having bigger sub-buffers also ensures a lower sub-buffer switching
-frequency.
+Having bigger sub-buffers also ensures a lower
+<<channel-switch-timer,sub-buffer switching frequency>>.
+
The number of sub-buffers is only meaningful if you create the channel
in overwrite mode: in this case, if a sub-buffer overwrite happens, the
An **event** is the consequence of the execution of an _instrumentation
point_, like a tracepoint that you manually place in some source code,
or a Linux kernel KProbe. An event is said to _occur_ at a specific
-time. Different actions can be taken upon the occurance of an event,
+time. Different actions can be taken upon the occurrence of an event,
like record the event's payload to a buffer.
An **event record** is the representation of an event in a sub-buffer. A
----
--
-. Edit path:{probes/Makefile} and add your new kernel module object
+. Edit path:{probes/KBuild} and add your new kernel module object
next to the existing ones:
+
--
[source,make]
-.path:{probes/Makefile}
+.path:{probes/KBuild}
----
# ...
or a Linux kernel KProbe.
+
An event is said to _occur_ at a specific time. Different actions can
-be taken upon the occurance of an event, like record the event's payload
+be taken upon the occurrence of an event, like record the event's payload
to a sub-buffer.
<<channel-overwrite-mode-vs-discard-mode,event loss mode>>::