X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=2.11%2Flttng-docs-2.11.txt;h=de605dad50e9706d59f870c52ff2e869d78bb952;hb=146d7451a16a32feeeefe65df794b76eaf9c2ff7;hp=b7406482899b85529c5d8bc12fb06e03e0b246d7;hpb=748a3492e8e2c2147f3d7db3fd9b35e77eb5a490;p=lttng-docs.git diff --git a/2.11/lttng-docs-2.11.txt b/2.11/lttng-docs-2.11.txt index b740648..de605da 100644 --- a/2.11/lttng-docs-2.11.txt +++ b/2.11/lttng-docs-2.11.txt @@ -1,7 +1,7 @@ The LTTng Documentation ======================= Philippe Proulx -v2.11, 22 October 2019 +v2.11, 6 April 2020 include::../common/copyright.txt[] @@ -202,6 +202,14 @@ address. + This change makes the tracer more efficient on NUMA systems. +* The <> kernel module now also + creates a ``misc'' device named `lttng-logger`, which udev will + make accessible as the path:{/dev/lttng-logger} special file. ++ +The `lttng-logger` device shares the `/proc/lttng-logger` file's ABI, +but it works from within containers when the path is made accessible to +them. + [[nuts-and-bolts]] == Nuts and bolts @@ -371,14 +379,123 @@ but note that: * You only need to install LTTng-UST if you intend to trace user applications. -[IMPORTANT] -==== -As of 22 October 2019, LTTng{nbsp}{revision} is not available -as distribution packages, except for <>. +[role="growable"] +.Availability of LTTng{nbsp}{revision} for major Linux distributions as of 30 March 2020. +|==== +|Distribution |Available in releases -You can <> -to install and use it. -==== +|https://www.ubuntu.com/[Ubuntu] +|Ubuntu{nbsp}16.04 _Xenial Xerus_ and Ubuntu{nbsp}18.04 _Bionic Beaver_: +<>. + +|https://www.debian.org/[Debian] +|<>. + +|https://www.archlinux.org/[Arch Linux] +|<>. + +|https://getfedora.org/[Fedora] +|xref:fedora[Fedora{nbsp}32 and Fedora{nbsp}33]. + +|https://www.redhat.com/[RHEL] and https://www.suse.com/[SLES] +|See http://packages.efficios.com/[EfficiOS Enterprise Packages]. + +|https://buildroot.org/[Buildroot] +|xref:buildroot[Buildroot{nbsp}2019.11 and Buildroot{nbsp}2020.02]. +|==== + + +[[ubuntu-ppa]] +=== Ubuntu: noch:{LTTng} Stable {revision} PPA + +The https://launchpad.net/~lttng/+archive/ubuntu/stable-{revision}[LTTng +Stable{nbsp}{revision} PPA] offers the latest stable +LTTng{nbsp}{revision} packages for Ubuntu{nbsp}16.04 _Xenial Xerus_ and +Ubuntu{nbsp}18.04 _Bionic Beaver_. + +To install LTTng{nbsp}{revision} from the LTTng Stable{nbsp}{revision} +PPA: + +. Add the LTTng Stable{nbsp}{revision} PPA repository and update the + list of packages: ++ +-- +[role="term"] +---- +# apt-add-repository ppa:lttng/stable-2.11 +# apt-get update +---- +-- + +. Install the main LTTng{nbsp}{revision} packages: ++ +-- +[role="term"] +---- +# apt-get install lttng-tools +# apt-get install lttng-modules-dkms +# apt-get install liblttng-ust-dev +---- +-- + +. **If you need to instrument and trace + <>**, install the LTTng-UST + Java agent: ++ +-- +[role="term"] +---- +# apt-get install liblttng-ust-agent-java +---- +-- + +. **If you need to instrument and trace + <>**, install the + LTTng-UST Python agent: ++ +-- +[role="term"] +---- +# apt-get install python3-lttngust +---- +-- + + +[[debian]] +=== Debian + +To install LTTng{nbsp}{revision} on Debian "bullseye" (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 <>**, install the LTTng-UST Java agent: ++ +-- +[role="term"] +---- +# apt-get install liblttng-ust-agent-java +---- +-- + +. **If you need to instrument and trace <>**, install the LTTng-UST Python agent: ++ +-- +[role="term"] +---- +# apt-get install python3-lttngust +---- +-- [[arch-linux]] @@ -390,7 +507,7 @@ LTTng-modules{nbsp}{revision} are available in the https://aur.archlinux.org/[AUR]. To install LTTng{nbsp}{revision} on Arch Linux, using -https://github.com/actionless/pikaur[pikaur] for the AUR packages: +https://github.com/Jguer/yay[yay] for the AUR packages: . Install the main LTTng{nbsp}{revision} packages: + @@ -398,8 +515,8 @@ https://github.com/actionless/pikaur[pikaur] for the AUR packages: [role="term"] ---- # pacman -Sy lttng-ust -$ pikaur -Sy lttng-tools -$ pikaur -Sy lttng-modules +$ yay -Sy lttng-tools +$ yay -Sy lttng-modules ---- -- @@ -415,6 +532,77 @@ $ pikaur -Sy lttng-modules -- +[[fedora]] +=== Fedora + +To install LTTng{nbsp}{revision} on Fedora{nbsp}32 and Fedora{nbsp}33: + +. Install the LTTng-tools{nbsp}{revision} and LTTng-UST{nbsp}{revision} + packages: ++ +-- +[role="term"] +---- +# yum install lttng-tools +# yum install lttng-ust +---- +-- + +. 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.11.tar.bz2 && +tar -xf lttng-modules-latest-2.11.tar.bz2 && +cd lttng-modules-2.11.* && +make && +sudo make modules_install && +sudo depmod -a +---- +-- + +[IMPORTANT] +.Java and Python application instrumentation and tracing +==== +If you need to instrument and trace <> on Fedora, you need to build and install +LTTng-UST{nbsp}{revision} <> 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 <> 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. +==== + + +[[buildroot]] +=== Buildroot + +To install LTTng{nbsp}{revision} on Buildroot{nbsp}2019.11 and +Buildroot{nbsp}2020.02: + +. Launch the Buildroot configuration tool: ++ +-- +[role="term"] +---- +$ make menuconfig +---- +-- + +. In **Kernel**, check **Linux kernel**. +. In **Toolchain**, check **Enable WCHAR support**. +. In **Target packages**{nbsp}→ **Debugging, profiling and benchmark**, + check **lttng-modules** and **lttng-tools**. +. In **Target packages**{nbsp}→ **Libraries**{nbsp}→ + **Other**, check **lttng-libust**. + + [[building-from-source]] === Build from source @@ -1713,8 +1901,9 @@ kernel tracer writes to the ring buffer; a * The _LTTng logger_ module. + The LTTng logger module implements the special path:{/proc/lttng-logger} -file so that any executable can generate LTTng events by opening and -writing to this file. +(and path:{/dev/lttng-logger} since LTTng{nbsp}2.11) files so that any +executable can generate LTTng events by opening and writing to those +files. + See <>. @@ -3965,7 +4154,7 @@ $ lttng enable-event --userspace 'lttng_ust_tracelog:*' [[prebuilt-ust-helpers]] === Prebuilt user space tracing helpers -The LTTng-UST package provides a few helpers in the form or preloadable +The LTTng-UST package provides a few helpers in the form of preloadable shared objects which automatically instrument system functions and calls. @@ -4127,7 +4316,7 @@ logging frameworks: .LTTng-UST Java agent imported by a Java application. image::java-app.png[] -Note that the methods described below are new in LTTng{nbsp}{revision}. +Note that the methods described below are new in LTTng{nbsp}2.8. Previous LTTng versions use another technique. NOTE: We use http://openjdk.java.net/[OpenJDK]{nbsp}8 for development @@ -4854,9 +5043,10 @@ variable. === LTTng logger The `lttng-tracer` Linux kernel module, part of -<>, creates the special LTTng logger file -path:{/proc/lttng-logger} when it's loaded. Any application can write -text data to this file to emit an LTTng event. +<>, creates the special LTTng logger files +path:{/proc/lttng-logger} and path:{/dev/lttng-logger} (since +LTTng{nbsp}2.11) when it's loaded. Any application can write text data +to any of those files to emit an LTTng event. [role="img-100"] .An application writes to the LTTng logger file to emit an LTTng event. @@ -4868,7 +5058,7 @@ mostly to instrument shell scripts: [role="term"] ---- -$ echo "Some message, some $variable" > /proc/lttng-logger +$ echo "Some message, some $variable" > /dev/lttng-logger ---- Any event that the LTTng logger emits is named `lttng_logger` and @@ -4880,7 +5070,7 @@ matches its event name, not only the root user or users in the To use the LTTng logger: -* From any application, write text data to the path:{/proc/lttng-logger} +* From any application, write text data to the path:{/dev/lttng-logger} file. The `msg` field of `lttng_logger` event records contains the @@ -4902,9 +5092,9 @@ can be instrumented in a more efficient way, namely: [source,bash] .path:{test.bash} ---- -echo 'Hello, World!' > /proc/lttng-logger +echo 'Hello, World!' > /dev/lttng-logger sleep 2 -df --human-readable --print-type / > /proc/lttng-logger +df --human-readable --print-type / > /dev/lttng-logger ---- <>, @@ -6103,7 +6293,7 @@ help you solve a problem faster. Examples of context fields are: **process priority** of the thread in which the event occurs. * The **hostname** of the system on which the event occurs. * The Linux kernel and user call stacks (since - LTTng{nbsp}{revision}). + LTTng{nbsp}11). * The current values of many possible **performance counters** using perf, for example: ** CPU cycles, stalled cycles, idle cycles, and the other cycle types.