Installation sous RedHat :
    yum install oprofile
Installation de la GUI :
    yum install oprofile-gui
Si on souhaite recompiler :
yum install kernel-devel # Pour plus de detail sur sources kernel http://wiki.centos.org/HowTos/I_need_the_Kernel_Source
yum install binutils-devel // Pour liiberty qui en général est inclut dans binutils mais pas chez redhat
./configure –prefix=/usr/local –with-kernel-support
La faq recommande cependant pour RedHat de ne pas utiliser directement la version sur le site, mais celle du système.
Manuel d’administration RedHat 5 :
http://www.linuxtopia.org/online_books/rhel5/rhel5_administration/rhel5_ch-oprofile.html
Site oprofile : http://oprofile.sourceforge.net/docs/
Mailing-list : http://marc.info/?l=oprofile-list

Utilisation :
# pour ne pas profiler le kernel
opcontrol –setup –no-vmlinux
# pour avoir un backtrace de 5
opcontrol –callgraph=5
# pour demarre/arrete : Les fichiers sont dans /var/lib/oprofile/samples/ et le log dans /var/lib/oprofile/samples/oprofiled.log
opcontrol –start
Using default event: CPU_CLK_UNHALTED:100000:0:1:1
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.
Profiler running.
opcontrol –shutdown
# pour sauver l’état courant dans /var/lib/oprofile/samples/name/
opcontrol –save=<name>
# pour obtenir l’état des stat avec la liste des symbol (–symbols est aussi possible)
opreport -l /full_path/to/executable
Les options :
-d precise l’emplacement dans chaque fonction
session:<name> = le nom de la sessions à utiliser ss /var/lib/oprofile/samples/
# pour obtenir un état avec call-graph
opreport -cl –demangle=smart /full_path/to/executable
# pour obtenir une sortie en XML
opreport –xml –details
# pour matcher le hit avec une instruction dans le source
opannotate –search-dirs <src -dir> –source –output-dir=~/oprof_dvs <executable>
D’après les commentaires sur mozilla.dev.platform, faudrait-il démarrer avec « sudo opcontrol –start –callgraph=5 », les deux sur la même ligne pour bien que le callgraph soit pris en compte ?

/dev/oprofile/ contient la représentation des paramètres kernel.
Pour avoir la liste des opérations possibles
ophelp
opcontrol –event=<event-name><sample-rate>
# By default, a time-based event set is selected. It creates a sample every 100,000 clock cycles per processor.
# Une alternative pour voir les échecs de cache
opcontrol –event=L2_RQSTS:1000:0xf1
# Outils opgprog pour lier avec gprof
opgprof which produces a gmon.out file for use with gprof -p
Documentation gprof

Profiling entire system activity with sysprof
Alternative : Sysprof http://www.daimi.au.dk/~sandmann/sysprof/
Sysprof n’a pas toutes les options de oprofile, mais sa force est le fait de représenter précisément le graphe d’appel de oprofile. Outil graphique, il existe aussi une ligne de commande en fait.
# Pour une version compatible avant le kernel 2.6.31 prendre Sysprof 1.0.12
yum install glade2 libglade2-devel.x86_64 glib2-devel gtk2-devel.x86_64 gtk+-devel.x86_64
./configure –prefix /usr/local ; make ; make install
# => INSTALL /root/sysprof-1.0.12/module/sysprof-module.ko
# charger le module
modprobe sysprof-module
En pratique dans mon appli, ça ne marche pas terrible il a l’air de ne pas arriver à établir le chemin d’appel pour la majorité des fonctions !

Sinon KCachegrind – Profiling Visualization
KCachegrind is part of KDE since KDE 3.2
Utilisation de KCachegrind
Valgrind : Callgrind : http://valgrind.org/docs/manual/cl-manual.html
valgrind –tool=callgrind –instr-atstart=no [application] –nofor
callgrind_control -i on
callgrind_control -i off
kcachegrind callgrind.out.[pid]

Utilisation de tools/perf/ dans les kernels récents