X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2FQUICKSTART;h=a47a5ee25f614305f9d4c8d0d4e32d1ddb4f8a64;hb=be4a0edc4de5b2969c11a6c344db725e1ca554a7;hp=b5d31f7e30e64d105f1d20150a76c675f3babe52;hpb=208a5623da00e5ca4d2f9af4ddae15bf51152207;p=lttv.git diff --git a/ltt/branches/poly/QUICKSTART b/ltt/branches/poly/QUICKSTART index b5d31f7e..a47a5ee2 100644 --- a/ltt/branches/poly/QUICKSTART +++ b/ltt/branches/poly/QUICKSTART @@ -13,7 +13,7 @@ applications. 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. @@ -38,6 +38,7 @@ supported architectures : Intel Pentium (UP/SMP) with TSC PowerPC 32 and 64 bits ARM +x86_64 C2 Microsystems (variant of MIPS) LTTV : @@ -204,10 +205,12 @@ bzip2 -cd patch-2.6.X-lttng-0.x.xx.tar.bz2 | tar xvof - su - cd /usr/src -wget http://kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.X.tar.bz2 +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 +- For LTTng 0.9.4- cat /usr/src/lttng/patch*-2.6.X-lttng-0.x.xx* | patch -p1 +- For LTTng 0.9.5+ apply the patches in the order specified in the series file, + or use quilt cd .. mv linux-2.6.X linux-2.6.X-lttng-0.x.xx @@ -226,31 +229,36 @@ make menuconfig (or make xconfig or make config) Select the following options : [*] Linux Trace Toolkit Instrumentation Support or <*> Linux Trace Toolkit Tracer + 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 + Linux Trace Toolkit Netlink Controller + 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 + 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 Select Select 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 reboot -Select the Linux 2.6.16-lttng-0.x.xx kernel in your boot loader. +Select the Linux 2.6.17-lttng-0.x.xx kernel in your boot loader. -- on PowerPC -cp vmlinux /boot/vmlinux-2.6.X-lttng-0.x.xx +cp vmlinux.strip /boot/vmlinux-2.6.X-lttng-0.x.xx cp System.map /boot/System.map-2.6.X-lttng-0.x.xx cp .config /boot/config-2.6.X-lttng-0.x.xx depmod -ae -F /boot/System.map-2.6.X-lttng-0.x.xx 2.6.X-lttng-0.x.xx @@ -260,30 +268,40 @@ that comes first is the default kernel) ybin select the right entry at the yaboot prompt (see choices : tab, select : type the kernel name followed by enter) -Select the Linux 2.6.16-lttng-0.x.xx kernel in your boot loader. +Select the Linux 2.6.17-lttng-0.x.xx kernel in your boot loader. -- * 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 @@ -293,9 +311,24 @@ modprobe ltt-statedump 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 @@ -354,7 +387,7 @@ root). 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 : @@ -362,10 +395,14 @@ lttctl -n trace -R 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 : @@ -374,7 +411,11 @@ lttv -m textDump -t /tmp/trace 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. *********************************************************** @@ -392,27 +433,40 @@ make 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.16-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.16-lttng-0.x.xx/ltt - * edit the kernel file you want to instrument - - Add #include at the beginning - of the file. - - Add a call to the tracing functions. See their names and parameters in - /usr/src/linux-2.6.16-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.