What you will typically want is to read sections 2 and 3 : install LTTng from
sources and use it.
-These operations are made for installing the LTTng 0.5.X tracer on a
+These operations are made for installing the LTTng 0.6.X tracer on a
linux 2.6.X kernel. You will also find instructions for installation of
LTTV 0.8.x : the Linux Trace Toolkit Viewer.
Intel Pentium (UP/SMP) with TSC
PowerPC 32 and 64 bits
ARM
+x86_64
C2 Microsystems (variant of MIPS)
LTTV :
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.X.tar.bz2
bzip2 -cd linux-2.6.X.tar.bz2 | tar xvof -
cd linux-2.6.X
-cat /usr/src/lttng/patch-2.6.X-lttng-0.x.xx* | patch -p1
+cat /usr/src/lttng/patch*-2.6.X-lttng-0.x.xx* | patch -p1
cd ..
mv linux-2.6.X linux-2.6.X-lttng-0.x.xx
Select the following options :
[*] Linux Trace Toolkit Instrumentation Support
<M> or <*> Linux Trace Toolkit Tracer
+ <M> or <*> Linux Trace Toolkit Relay+DebugFS Support
It makes no difference for the rest of the procedure whether the Tracer
is compiled built-in or as a module.
activate :
[*] Align Linux Trace Toolkit Traces
[*] Allow tracing from userspace
+ <M> Linux Trace Toolkit Netlink Controller
+ <M> Linux Trace Toolkit State Dump
your choice (see < Help >) :
[ ] Activate Linux Trace Toolkit Heartbeat Timer
- You may or may not activate instrumentation per facility. They are all
- selected for logging by default. It can be used as a compile time filter to
- enable/disable logging of events. It is useful to discard events with a
- minimal impact on the system and especially useful for now, as the dynamic
- filter has not been implemented yet.
- Select <Exit>
+ You may or may not decide to compile probes. Afterward, you will have to
+ load the probe modules to enable tracing of their events. The probes
+ automatically select the appropriate facilities.
+ Static instrumentation is a more invasive type of instrumentation that gives
+ the address taking a lock or doing a printk.
+ Select <Exit>
Select <Exit>
Select <Yes>
make
make modules_install
+(if necessary, create a initrd with mkinitrd or your preferate alternative)
+(mkinitrd -o /boot/initrd.img-2.6.X-lttng-0.x.xx 2.6.X-lttng-0.x.xx)
-- on X86, X86_64
make install
* Editing the system wide configuration
-You must activate relayfs and specify a mount point. This is typically done in
+You must activate debugfs and specify a mount point. This is typically done in
fstab such that it happens at boot time.
-If you have never used RelayFS before, these operation would do this for you :
+If you have never used DebugFS before, these operation would do this for you :
-mkdir /mnt/relayfs
+mkdir /mnt/debugfs
cp /etc/fstab /etc/fstab.lttng.bkp
-echo "relayfs /mnt/relayfs relayfs rw 0 0" >> /etc/fstab
+echo "debugfs /mnt/debugfs debugfs rw 0 0" >> /etc/fstab
-then, rebooting or issuing the following command will activate relayfs :
+then, rebooting or issuing the following command will activate debugfs :
-mount /mnt/relayfs
+mount /mnt/debugfs
-You need to load the ltt-control module to be able to control tracing from user
+You need to load the LTT modules to be able to control tracing from user
space. This is done by issuing the command :
modprobe ltt-control
+modprobe ltt-core
+modprobe ltt-relay
+modprobe ltt-tracer
+modprobe ltt-probe-mm
+modprobe ltt-probe-kernel
+modprobe ltt-probe-i386 (or x86_64, powerpc, ppc, arm, mips)
+modprobe ltt-probe-net
+modprobe ltt-probe-list
+modprobe ltt-probe-ipc
+modprobe ltt-probe-fs
If you want to have complete information about the kernel state (including all
the process names), you need to load the ltt-statedump module. This is done by
You can automate at boot time loading the ltt-control module by :
+cp /etc/modules /etc/modules.bkp
echo ltt-control >> /etc/modules
+echo ltt-core >> /etc/modules
+echo ltt-relay >> /etc/modules
+echo ltt-tracer >> /etc/modules
+echo ltt-probe-mm >> /etc/modules
+echo ltt-probe-kernel >> /etc/modules
+echo ltt-probe-i386 >> /etc/modules (or x86_64, powerpc, ppc, arm, mips)
+echo ltt-probe-net >> /etc/modules
+echo ltt-probe-list >> /etc/modules
+echo ltt-probe-ipc >> /etc/modules
+echo ltt-probe-fs >> /etc/modules
echo ltt-statedump >> /etc/modules
+(note : if you want to probe a marker which is within a module, make sure you
+load the probe _after_ the module, otherwise the probe will not be able to
+connect itself to the marker.)
+
* Getting and installing the ltt-control package (on the traced machine)
(note : the ltt-control package contains lttd and lttctl. Although it has the
Start tracing :
-lttctl -n trace -d -l /mnt/relayfs/ltt -t /tmp/trace
+lttctl -n trace -d -l /mnt/debugfs/ltt -t /tmp/trace
Stop tracing and destroy trace channels :
see lttctl --help for details.
+(note : to see if the buffers has been filled, look at the dmesg output after
+lttctl -R or after stopping tracing from the GUI, it will show an event lost
+count. If it is the case, try using larger buffers. See lttctl --help to learn
+how.)
* Use text mode LTTV
-Fell free to look in /usr/local/lib/lttv/plugins to see all the text and
+Feel free to look in /usr/local/lib/lttv/plugins to see all the text and
graphical plugins available.
For example, a simple trace dump in text format is available with :
see lttv -m textDump --help for detailed command line options of textDump.
-
+It is, in the current state of the project, very useful to use "grep" on the
+text output to filter by specific event fields. You can later copy the timestamp
+of the events to the clipboard and paste them in the GUI by clicking on the
+bottom right label "Current time". Support for this type of filtering should
+be added to the filter module soon.
***********************************************************
make install
-* Add new events to the kernel with genevent
+* Add new events to the kernel with genevent (deprecated in LTTng 0.9.x)
su -
-cd /usr/local/share/LinuxTraceToolkitViewer/facilities
+cd /usr/local/share/ltt-control/facilities
cp process.xml yourfacility.xml
* edit yourfacility.xml to fit your needs.
cd /tmp
-/usr/local/bin/genevent /usr/local/share/LinuxTraceToolkitViewer/facilities/yourfacility.xml
+/usr/local/bin/genevent /usr/local/share/ltt-control/facilities/yourfacility.xml
cp ltt-facility-yourfacility.h ltt-facility-id-yourfacility.h \
- /usr/src/linux-2.6.17-lttng-0.x.xx8/include/linux/ltt
+ /usr/src/linux-2.6.17-lttng-0.x.xx8/include/ltt
cp ltt-facility-loader-yourfacility.c ltt-facility-loader-yourfacility.h \
- /usr/src/linux-2.6.17-lttng-0.x.xx/ltt
- * edit the kernel file you want to instrument
- - Add #include <linux/ltt/ltt-facility-yourfacility.h> at the beginning
- of the file.
- - Add a call to the tracing functions. See their names and parameters in
- /usr/src/linux-2.6.17-lttng-0.x.xx/include/linux/ltt/ltt-facility-yourfacility.h
-
+ /usr/src/linux-2.6.17-lttng-0.x.xx/ltt/facilities
+ * edit the kernel file you want to instrument to add a marker to it. See
+ include/linux/marker.h.
+ * create a dynamically loadable probe. See ltt/probes for examples. The probe
+ will be connected to your marker and will typically call the logging
+ functions found in the header file you created with genevent.
+
+* Add new kernel events
+
+*Important* note : in its current state, LTTng and LTTV needs the programmer
+to keep the marker/probe format string and the XML description of the
+event data types in sync by hand. Failure to do so will result in errors in
+LTTV.
+
+See the markers documentation to see how to describe the marker. You will need
+to clone probe modules found in ltt/probes to connect them to the markers so
+that the information can be recorded in the trace.
+
* Add new events to userspace programs with genevent
See http://ltt.polymtl.ca/ > USERSPACE TRACING QUICKSTART
+User-space tracing still uses genevent, which is subject to change in a near
+future.