| 1 | --- |
| 2 | id: lttng-alternatives |
| 3 | --- |
| 4 | |
| 5 | Excluding proprietary solutions, a few competing software tracers |
| 6 | exist for Linux: |
| 7 | |
| 8 | * <a href="https://www.kernel.org/doc/Documentation/trace/ftrace.txt" class="ext">ftrace</a> |
| 9 | is the de facto function tracer of the Linux kernel. Its user |
| 10 | interface is a set of special files in sysfs. |
| 11 | * <a href="https://perf.wiki.kernel.org/" class="ext">perf</a> is |
| 12 | a performance analyzing tool for Linux which supports hardware |
| 13 | performance counters, tracepoints, as well as other counters and |
| 14 | types of probes. perf's controlling utility is the `perf` command |
| 15 | line/curses tool. |
| 16 | * <a href="http://linux.die.net/man/1/strace" class="ext">strace</a> |
| 17 | is a command line utility which records system calls made by a |
| 18 | user process, as well as signal deliveries and changes of process |
| 19 | state. strace makes use of |
| 20 | <a href="https://en.wikipedia.org/wiki/Ptrace" class="ext">ptrace</a> |
| 21 | to fulfill its function. |
| 22 | * <a href="https://sourceware.org/systemtap/" class="ext">SystemTap</a> |
| 23 | is a Linux kernel and user space tracer which uses custom user scripts |
| 24 | to produce plain text traces. Scripts are converted to the C language, |
| 25 | then compiled as Linux kernel modules which are loaded to produce |
| 26 | trace data. SystemTap's primary user interface is the `stap` |
| 27 | command line tool. |
| 28 | * <a href="http://www.sysdig.org/" class="ext">sysdig</a>, like |
| 29 | SystemTap, uses scripts to analyze Linux kernel events. Scripts, |
| 30 | or _chisels_ in sysdig's jargon, are written in Lua and executed |
| 31 | while the system is being traced, or afterwards. sysdig's interface |
| 32 | is the `sysdig` command line tool as well as the curses-based |
| 33 | `csysdig` tool. |
| 34 | |
| 35 | The main distinctive features of LTTng is that it produces correlated |
| 36 | kernel and user space traces, as well as doing so with the lowest |
| 37 | overhead amongst other solutions. It produces trace files in the |
| 38 | <a href="http://diamon.org/ctf" class="ext"><abbr title="Common Trace Format">CTF</abbr></a> |
| 39 | format, an optimized file format for production and analyses of |
| 40 | multi-gigabyte data. LTTng is the result of close to 10 years of |
| 41 | active development by a community of passionate developers. LTTng 2.7 |
| 42 | is currently available on some major desktop and server Linux |
| 43 | distributions. |
| 44 | |
| 45 | The main interface for tracing control is a single command line tool |
| 46 | named `lttng`. The latter can create several tracing sessions, |
| 47 | enable/disable events on the fly, filter them efficiently with custom |
| 48 | user expressions, start/stop tracing, and do much more. Traces can be |
| 49 | recorded on disk or sent over the network, kept totally or partially, |
| 50 | and viewed once tracing becomes inactive or in real-time. |
| 51 | |
| 52 | [Install LTTng now](#doc-installing-lttng) and start tracing! |