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