update features
[lttv.git] / trunk / lttv / QUICKSTART.html
... / ...
CommitLineData
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3<head>
4 <title>Linux Trace Toolkit Next Generation User Documentation</title>
5</head>
6 <body>
7
8<h1>Linux Trace Toolkit Next Generation User Documentation</h1>
9
10Author : Mathieu Desnoyers, September 2005<br>
11Last update : January 21st, 2009<br>
12(originally known as the LTTng QUICKSTART guide)
13
14<h2>Table of Contents</h2>
15<ul>
16
17<li><a href="#intro" name="TOCintro">Introduction</a></li>
18<li><a href="#section1" name="TOCsection1">Installing LTTng and LTTV from
19sources</a></li>
20<ul>
21<li><a href="#prerequisites" name="TOCprerequisites">Prerequisistes</li>
22<li><a href="#getlttng" name="TOCgetlttng">Getting the LTTng packages</li>
23<li><a href="#getlttngsrc" name="TOCgetlttngsrc">Getting the LTTng kernel sources</li>
24<li><a href="#installlttng" name="TOCinstalllttng">Installing a LTTng kernel</li>
25<li><a href="#editconfig" name="TOCeditconfig">Editing the system wide
26configuration</a>
27<li><a href="#getlttctl" name="TOCgetlttctl">Getting and installing the
28ltt-control package</li>
29<li><a href="#userspacetracing" name="TOCuserspacetracing">Userspace Tracing</li>
30<li><a href="#getlttv" name="TOCgetlttv">Getting and installing the LTTV package</ul>
31<li><a href="#section2" name="TOCsection2">Using LTTng and LTTV</a></li>
32<li><a href="#section3" name="TOCsection3">Adding kernel and user-space
33instrumentation</a>
34<ul>
35<li><a href="#kerneltp" name="TOCkerneltp">Adding kernel instrumentation</a></li>
36<li><a href="#usertp" name="TOCusertp">Adding userspace instrumentation</a></li>
37</ul>
38<li><a href="#section4" name="TOCsection4">Creating Debian and RPM packages
39from LTTV</a></li>
40<ul>
41<li><a href="#pkgdebian" name="TOCpkgdebian">Create custom LTTV Debian
42<li><a href="#pkglttng" name="TOCpkglttng">Create custom LTTng packages</a></li>
43
44</ul>
45
46</ul>
47
48<hr />
49
50<h2><a href="#TOCintro" name="intro">Introduction</a></h2>
51<p>
52This document is made of four parts : the first one explains how
53to install LTTng and LTTV from sources, the second one describes the steps
54to follow to trace a system and view it. The third part explains
55briefly how to add a new trace point to the kernel and to user space
56applications. The fourth and last part explains how to create Debian or RPM
57packages from the LTTng and LTTV sources.
58<p>
59These operations are made for installing the LTTng 0.86 tracer on a linux 2.6.X
60kernel. You will also find instructions for installation of LTTV 0.12.x : the
61Linux Trace Toolkit Viewer.
62To see the list of compatibilities between LTTng, ltt-control, LTTV, please
63refer to :
64<a
65href="http://ltt.polymtl.ca/svn/trunk/lttv/doc/developer/lttng-lttv-compatibility.html">LTTng+LTTV versions compatibility</a>
66The lttng patch is necessary to have the tracing hooks in the kernel.
67
68<br>
69<br>
70Supported architectures :
71br>
72LTTng :<br>
73<li> x86 32/64 bits
74<li> PowerPC 32 and 64 bits
75<li> ARM (with limited timestamping precision, e.g. 1HZ. Need
76architecture-specific support for better precision)
77<li> MIPS
78<br>
79<br>
80LTTV :<br>
81<li> Intel 32/64 bits
82<li> PowerPC 32 and 64 bits
83<li> Possibly others. Takes care of endianness and type size difference between
84the LTTng traces and the LTTV analysis tool.
85
86<hr />
87
88
89<h2><a href="#TOCsection1" name="section1">Installation from sources</a></h2>
90<p>
91
92<h3><a href="#TOCprerequisites" name="prerequisites">Prerequisites</a></h3>
93<ul>
94<p>
95Tools needed to follow the package download steps :
96
97<li>wget
98<li>bzip2
99<li>gzip
100<li>tar
101
102<p>
103You have to install the standard development libraries and programs necessary
104to compile a kernel :
105
106<PRE>
107(from Documentation/Changes in the Linux kernel tree)
108Gnu C 2.95.3 # gcc --version
109Gnu make 3.79.1 # make --version
110binutils 2.12 # ld -v
111util-linux 2.10o # fdformat --version
112module-init-tools 0.9.10 # depmod -V
113</PRE>
114
115<p>
116You might also want to have libncurses5 to have the text mode kernel
117configuration menu, but there are alternatives.
118
119<p>
120Prerequisites for LTTV 0.x.x installation are :
121
122<PRE>
123gcc 3.2 or better
124gtk 2.4 or better development libraries
125 (Debian : libgtk2.0, libgtk2.0-dev)
126 (Fedora : gtk2, gtk2-devel)
127 note : For Fedora users : this might require at least core 3 from Fedora,
128 or you might have to compile your own GTK2 library.
129glib 2.4 or better development libraries
130 (Debian : libglib2.0-0, libglib2.0-dev)
131 (Fedora : glib2, glib2-devel)
132libpopt development libraries
133 (Debian : libpopt0, libpopt-dev)
134 (Fedora : popt)
135libpango development libraries
136 (Debian : libpango1.0, libpango1.0-dev)
137 (Fedora : pango, pango-devel)
138libc6 development librairies
139 (Debian : libc6, libc6-dev)
140 (Fedora : glibc, glibc)
141</PRE>
142</ul>
143
144<li>Reminder</li>
145
146<p>
147See the list of compatibilities between LTTng, ltt-control and LTTV at :
148<a
149href="http://ltt.polymtl.ca/svn/trunk/lttv/doc/developer/lttng-lttv-compatibility.html">LTTng+LTTV
150versions compatibility</a>.
151
152
153<h3><a href="#TOCgetlttng" name="getlttng">Getting the LTTng packages</a></h3>
154
155<PRE>
156su -
157mkdir /usr/src/lttng
158cd /usr/src/lttng
159(see http://ltt.polymtl.ca/lttng for package listing)
160wget http://ltt.polymtl.ca/lttng/patch-2.6.X-lttng-0.x.xx.tar.bz2
161bzip2 -cd patch-2.6.X-lttng-0.x.xx.tar.bz2 | tar xvof -
162</PRE>
163
164
165<h3><a href="#TOCgetlttngsrc" name="getlttngsrc">Getting LTTng kernel sources</a></h3>
166
167<PRE>
168su -
169cd /usr/src
170wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.X.tar.bz2
171bzip2 -cd linux-2.6.X.tar.bz2 | tar xvof -
172cd linux-2.6.X
173- For LTTng 0.9.4- cat /usr/src/lttng/patch*-2.6.X-lttng-0.x.xx* | patch -p1
174- For LTTng 0.9.5+ apply the patches in the order specified in the series file,
175 or use quilt
176cd ..
177mv linux-2.6.X linux-2.6.X-lttng-0.x.xx
178</PRE>
179
180
181<h3><a href="#TOCinstalllttng" name="installlttng">Installing a LTTng kernel</a></h3>
182
183<PRE>
184su -
185cd /usr/src/linux-2.6.X-lttng-0.x.xx
186make menuconfig (or make xconfig or make config)
187 Select the < Help > button if you are not familiar with kernel
188 configuration.
189 Items preceded by [*] means they has to be built into the kernel.
190 Items preceded by [M] means they has to be built as modules.
191 Items preceded by [ ] means they should be removed.
192 go to the "General setup" section
193 Select the following options :
194 [*] Prompt for development and/or incomplete code/drivers
195 [*] Activate markers
196 [*] Activate userspace markers ABI (experimental, optional)
197 [*] Immediate value optimization (optional)
198 [*] Linux Trace Toolkit Next Generation (LTTng) --->
199 <M> or <*> Compile lttng tracing probes
200 <M> or <*> Linux Trace Toolkit High-speed Lockless Data Relay
201 <M> or <*> Linux Trace Toolkit Lock-Protected Data Relay
202 <M> or <*> Linux Trace Toolkit Serializer
203 <M> or <*> Linux Trace Toolkit Marker Control
204 <M> or <*> Linux Trace Toolkit Tracer
205 [*] Align Linux Trace Toolkit Traces
206 <M> or <*> Support logging events from userspace
207 [*] Support trace extraction from crash dump
208 <M> or <*> Linux Trace Toolkit Trace Controller
209 <M> or <*> Linux Trace Toolkit State Dump
210 Select <Exit>
211 Select <Exit>
212 Select <Yes>
213make
214make modules_install
215(if necessary, create a initrd with mkinitrd or your preferate alternative)
216(mkinitrd -o /boot/initrd.img-2.6.X-lttng-0.x.xx 2.6.X-lttng-0.x.xx)
217
218-- on X86, X86_64
219make install
220reboot
221Select the Linux 2.6.X-lttng-0.x.xx kernel in your boot loader.
222
223-- on PowerPC
224cp vmlinux.strip /boot/vmlinux-2.6.X-lttng-0.x.xx
225cp System.map /boot/System.map-2.6.X-lttng-0.x.xx
226cp .config /boot/config-2.6.X-lttng-0.x.xx
227depmod -ae -F /boot/System.map-2.6.X-lttng-0.x.xx 2.6.X-lttng-0.x.xx
228mkinitrd /boot/initrd.img-2.6.X-lttng-0.x.xx 2.6.X-lttng-0.x.xx
229(edit /etc/yaboot.conf to add a new entry pointing to your kernel : the entry
230that comes first is the default kernel)
231ybin
232select the right entry at the yaboot prompt (see choices : tab, select : type
233the kernel name followed by enter)
234Select the Linux 2.6.X-lttng-0.x.xx kernel in your boot loader.
235--
236</PRE>
237
238<h3><a href="#TOCeditconfig" name="editconfig">Editing the system wide
239configuration</a></h3>
240
241<p>
242You must activate debugfs and specify a mount point. This is typically done in
243fstab such that it happens at boot time. If you have never used DebugFS before,
244these operation would do this for you :
245
246<PRE>
247mkdir /mnt/debugfs
248cp /etc/fstab /etc/fstab.lttng.bkp
249echo "debugfs /mnt/debugfs debugfs rw 0 0" >> /etc/fstab
250</PRE>
251
252<p>
253then, rebooting or issuing the following command will activate debugfs :
254<PRE>
255mount /mnt/debugfs
256</PRE>
257
258<p>
259You need to load the LTT modules to be able to control tracing from user
260space. This is done by issuing the following commands. Note however
261these commands load all LTT modules. Depending on what options you chose to
262compile statically, you may not need to issue all these commands.
263
264<PRE>
265modprobe ltt-trace-control
266modprobe ltt-marker-control
267modprobe ltt-tracer
268modprobe ltt-serialize
269modprobe ltt-relay
270modprobe ipc-trace
271modprobe kernel-trace
272modprobe mm-trace
273modprobe net-trace
274modprobe fs-trace
275modprobe jbd2-trace
276modprobe ext4-trace
277modprobe syscall-trace
278modprobe trap-trace
279#if locking tracing is wanted, uncomment the following
280#modprobe lockdep-trace
281</PRE>
282
283<p>
284If you want to have complete information about the kernel state (including all
285the process names), you need to load the ltt-statedump module. This is done by
286issuing the command :
287
288<PRE>
289modprobe ltt-statedump
290</PRE>
291<p>
292You can automate at boot time loading the ltt-control module by :
293
294<PRE>
295cp /etc/modules /etc/modules.bkp
296echo ltt-trace-control >> /etc/modules
297echo ltt-marker-control >> /etc/modules
298echo ltt-tracer >> /etc/modules
299echo ltt-serialize >> /etc/modules
300echo ltt-relay >> /etc/modules
301echo ipc-trace >> /etc/modules
302echo kernel-trace >> /etc/modules
303echo mm-trace >> /etc/modules
304echo net-trace >> /etc/modules
305echo fs-trace >> /etc/modules
306echo jbd2-trace >> /etc/modules
307echo ext4-trace >> /etc/modules
308echo syscall-trace >> /etc/modules
309echo trap-trace >> /etc/modules
310#if locking tracing is wanted, uncomment the following
311#echo lockdep-trace >> /etc/modules
312</PRE>
313
314
315<h3><a href="#TOCgetlttctl" name="getlttctl">Getting and installing the
316ltt-control package (on the traced machine)</a></h3>
317<p>
318(note : the ltt-control package contains lttd and lttctl. Although it has the
319same name as the ltt-control kernel module, they are *not* the same thing.)
320
321<PRE>
322su -
323cd /usr/src
324wget http://ltt.polymtl.ca/lttng/ltt-control-0.x-xxxx2006.tar.gz
325gzip -cd ltt-control-0.x-xxxx2008.tar.gz | tar xvof -
326cd ltt-control-0.x-xxxx2006
327(refer to README to see the development libraries that must be installed on you
328system)
329./configure
330make
331make install
332</PRE>
333
334<h3><a href="#TOCuserspacetracing" name="userspacetracing">Userspace tracing</a></h3>
335
336<PRE>
337Make sure you selected the kernel menuconfig option :
338 <M> or <*> Support logging events from userspace
339And that the ltt-userspace-event kernel module is loaded if selected as a
340module.
341
342Simple userspace tracing is available through
343echo "some text to record" > /mnt/debugfs/ltt/write_event
344
345It will appear in the trace under event :
346channel : userspace
347event name : event
348</PRE>
349
350<h3><a href="#TOCgetlttv" name="getlttv">Getting and installing the LTTV package
351(on the visualisation machine, same
352or different from the visualisation machine)</a></h3>
353
354<PRE>
355su -
356cd /usr/src
357wget http://ltt.polymtl.ca/packages/lttv-0.x.xx-xxxx2008.tar.gz
358gzip -cd lttv-0.x.xx-xxxx2008.tar.gz | tar xvof -
359cd lttv-0.x.xx-xxxx2008
360(refer to README to see the development libraries that must be installed on your
361system)
362./configure
363make
364make install
365</PRE>
366
367<hr />
368
369
370<h2><a href="#TOCsection2" name="section2">Using LTTng and LTTV</a></h2>
371
372<li>IMPORTANT : Arm Linux Kernel Markers after each boot</li>
373<PRE>
374ltt-armall
375</PRE>
376
377<li>Use graphical LTTV to control tracing and analyse traces</li>
378<PRE>
379lttv-gui (or /usr/local/bin/lttv-gui)
380 - Spot the "Tracing Control" icon : click on it
381 (it's a traffic light icon)
382 - enter the root password
383 - click "start"
384 - click "stop"
385 - Yes
386 * You should now see a trace
387</PRE>
388
389<li>Use text mode LTTng to control tracing</li>
390<PRE>
391The tracing can be controlled from a terminal by using the lttctl command (as
392root).
393
394Start tracing :
395
396lttctl -C -w /tmp/trace1 trace1
397
398Stop tracing and destroy trace channels :
399
400lttctl -D trace1
401
402see lttctl --help for details.
403</PRE>
404<p>
405(note : to see if the buffers has been filled, look at the dmesg output after
406lttctl -R or after stopping tracing from the GUI, it will show an event lost
407count. If it is the case, try using larger buffers. See lttctl --help to learn
408how. lttv now also shows event lost messages in the console when loading a trace
409with missing events or lost subbuffers.)
410
411<li>Use text mode LTTV</li>
412<p>
413Feel free to look in /usr/local/lib/lttv/plugins to see all the text and
414graphical plugins available.
415<p>
416For example, a simple trace dump in text format is available with :
417<PRE>
418lttv -m textDump -t /tmp/trace
419</PRE>
420<p>
421See lttv -m textDump --help for detailed command line options of textDump.
422<p>
423It is, in the current state of the project, very useful to use "grep" on the
424text output to filter by specific event fields. You can later copy the timestamp
425of the events to the clipboard and paste them in the GUI by clicking on the
426bottom right label "Current time". Support for this type of filtering should
427be added to the filter module soon.
428
429<li>Hybrid mode</li>
430<p>
431Starting from LTTng 0.5.105 and ltt-control 0.20, a new mode can be used :
432hybrid. It can be especially useful when studying big workloads on a long period
433of time.
434<p>
435When using this mode, the most important, low rate control information will be
436recorded during all the trace by lttd (i.e. process creation/exit). The high
437rate information (i.e. interrupt/traps/syscall entry/exit) will be kept in a
438flight recorder buffer (now named flight-channelname_X).
439<p>
440The following lttctl commands take an hybrid trace :
441<p>
442Create trace channel, start lttd on normal channels, start tracing:
443<PRE>
444lttctl -C -w /tmp/trace2 -o channel.kernel.overwrite=1 trace2
445</PRE>
446<p>
447Stop tracing, start lttd on flight recorder channels, destroy trace channels :
448<PRE>
449lttctl -D -w /tmp/trace2 trace2
450</PRE>
451<p>
452Each "overwrite" channel is flight recorder channel.
453
454<li>Flight recorder mode</li>
455<p>
456The flight recorder mode writes data into overwritten buffers for all channels,
457including control channels, except for the facilities tracefiles. It consists of
458setting all channels to "overwrite".
459<p>
460The following lttctl commands take a flight recorder trace :
461<PRE>
462lttctl -C -w /tmp/trace3 -o channel.all.overwrite=1 trace3
463...
464lttctl -D -w /tmp/trace3 trace3
465</PRE>
466
467<hr />
468
469
470<h2><a href="#TOCsection3" name="section3">Adding new instrumentations with the
471markers</a></h2>
472<p>
473
474<h3><a href="#TOCkerneltp" name="kerneltp">Adding kernel
475instrumentation</a></h3>
476
477<p>
478See <a
479href="http://git.kernel.org/?p=linux/kernel/git/compudj/linux-2.6-lttng.git;a=blob;f=Documentation/markers.txt">Documentation/markers.txt</a>
480and <a
481href="http://git.kernel.org/?p=linux/kernel/git/compudj/linux-2.6-lttng.git;a=blob;f=Documentation/tracepoints.txt">Documentation/tracepoints.txt</a> in your kernel
482tree.
483<p>
484Also see <a
485href="http://git.kernel.org/?p=linux/kernel/git/compudj/linux-2.6-lttng.git;a=tree;f=ltt/probes">ltt/probes/</a>
486for LTTng probe examples.
487
488<h3><a href="#TOCusertp" name="usertp">Adding userspace instrumentation</a></h3>
489
490<li>Add new events to userspace programs with
491<a href="http://ltt.polymtl.ca/packages/">userspace markers packages</a></li>
492
493<p>
494Get the latest markers-userspace-*.tar.bz2 and see the Makefile and examples. It
495allows inserting markers in executables and libraries, currently only on x86_32
496and x86_64.
497See <a
498href="http://ltt.polymtl.ca/packages/markers-userspace-0.5.tar.bz2">markers-userspace-0.5.tar.bz2</a> or more recent.
499
500<p>
501Note that a new design document for a 3rd generation of tracepoint/marker-based
502userspace tracing is available at <a
503href="http://ltt.polymtl.ca/svn/trunk/lttv/doc/developer/ust.html">LTTng User-space Tracing
504Design</a>. This new infrastructure is not yet implemented.
505
506<p>
507The easy quick-and-dirty way to perform userspace tracing is currently to write
508an string to /mnt/debugfs/ltt/write_event. See <a
509href="#userspacetracing">Userspace tracing</a> in the
510installation for sources section of this document.
511
512<hr />
513
514<h2><a href="#TOCsection4" name="section4">Creating Debian or RPM packages</a></h2>
515<p>
516
517<h3><a href="#TOCpkgdebian" name="pkgdebian">Create custom LTTV Debian packages</a></h3>
518
519<PRE>
520Use : dpkg-buildpackage -rfakeroot
521</PRE>
522<p>
523You should then have your LTTV .deb files created for your architecture.
524
525<h3><a href="#TOCpkglttng" name="pkglttng">Create custom LTTng packages</a></h3>
526<p>
527For building LTTng Debian packages :
528get the build tree with patches applies as explained in section 2.
529
530<PRE>
531make menuconfig (or xconfig or config) (customize your configuration)
532make-kpkg kernel_image
533</PRE>
534<p>
535You will then see your freshly created .deb in /usr/src. Install it with
536<PRE>
537dpkg -i /usr/src/(image-name).deb
538</PRE>
539<p>
540Then, follow the section "Editing the system wide configuration" in section 2.
541
542
543
544 </body>
545</html>
This page took 0.024944 seconds and 4 git commands to generate.