Périodiquement, le démon OProfile, oprofiled, recueille les échantillons et les écrit dans le répertoire /var/lib/oprofile/samples/. Avant de les lire, assurez-vous que toutes les données sont bien écrites dans ce répertoire en exécutant la commande suivante en tant que super-utilisateur :
opcontrol --dump |
Chaque nom de fichier d'échantillons est basé sur le nom de l'exécutable, avec une accolade fermante (}) remplaçant chaque oblique (/). Le nom du fichier se termine par un signe dièse (#), suivi du nombre de compteurs utilisés pour ce fichier d'échantillons. Par exemple, le fichier suivant inclut les données d'échantillons pour l'exécutable /sbin/syslogd recueillies avec le compteur 0 :
}sbin}syslogd#0 |
Les outils suivants sont disponibles pour profiler les données d'échantillons une fois recueillies :
op_time
oprofpp
op_to_source
op_merge
Utilisez ces outils ainsi que les binaires profilés pour générer des rapports qui peuvent être analysés plus en détails.
![]() | Avertissement |
---|---|
L'exécutable en cours de profilage doit être utilisé avec ces outils pour analyser les données. Si il doit changer après que les données soient recueillies, sauvegardez l'exécutable utilisé pour créer les échantillons ainsi que les fichiers d'échantillons. |
Les échantillons pour chaque exécutable sont écrits sur un seul fichier d'échantillons. Les échantillons de chaque bibliothèque liée dynamiquement sont également écrits sur un seul fichier d'échantillons. Lorsque OProfile est en cours d'exécution, si l'exécutable surveillé change et si un fichier d'échantillons existe pour l'exécutable, le fichier d'échantillons existant sera automatiquement supprimé. Ainsi, si le fichier d'échantillons existant est nécessaire, il doit être sauvegardé avec l'exécutable utilisé pour le créer avant que l'exécutable ne soit remplacé par une nouvelle version. Reportez-vous à la Section 43.4 afin d'obtenir davantage d'informations sur la manière de sauvegarder le fichier d'échantillons.
L'outil op_time offre un aperçu sur tous les exécutables en cours de profilage.
Ci-dessous figure l'exemple d'une sortie :
581 0.2949 0.0000 /usr/bin/oprofiled 966 0.4904 0.0000 /usr/sbin/cupsd 1028 0.5218 0.0000 /usr/sbin/irqbalance 1187 0.6026 0.0000 /bin/bash 1480 0.7513 0.0000 /usr/bin/slocate 2039 1.0351 0.0000 /usr/lib/rpm/rpmq 6249 3.1722 0.0000 /usr/X11R6/bin/XFree86 8842 4.4885 0.0000 /bin/sed 31342 15.9103 0.0000 /usr/bin/gdmgreeter 58283 29.5865 0.0000 /no-vmlinux 82853 42.0591 0.0000 /usr/bin/perl |
Chaque exécutable est répertorié sur sa propre ligne. La première colonne représente le nombre d'échantillons enregistrés pour l'exécutable. La seconde colonne représente le pourcentage d'échantillons relatif au nombre total d'échantillons. La troisième colonne n'est pas utilisée et la quatrième représente le nom de l'exécutable.
Consultez la page de manuel relative à op_time afin d'obtenir une liste de toutes les options de ligne de commande disponibles, comme l'option -r utilisée pour trier la sortie de l'exécutable avec le nombre d'échantillons le plus grand à celui avec le nombre d'échantillons le plus petit. L'option -c est également utile pour spécifier un nombre de compteurs.
Pour récupérer des informations plus détaillées sur un exécutable donné, utilisez oprofpp :
oprofpp <mode> <executable> |
<executable> doit être le chemin complet à l'exécutable à être analysé. <mode> doit avoir l'une des valeurs suivantes :
Affiche les données d'échantillons par symbole. Par exemple, l'exemple suivant fait partie de la sortie obtenue en exécutant la commande oprofpp -l /usr/X11R6/bin/XFree86 :
vma samples % symbol name ... 08195d10 4 3.0303 miComputeCompositeClip 080b9180 5 3.78788 Dispatch 080cdce0 5 3.78788 FreeResource 080ce4a0 5 3.78788 LegalNewID 080ce640 5 3.78788 SecurityLookupIDByClass 080dd470 9 6.81818 WaitForSomething 080e1360 12 9.09091 StandardReadRequestFromClient ... |
La première colonne représente l'adresse de mémoire virtuelle de début (vma). La seconde colonne représente le nombre d'échantillons pour le symbole. La troisième colonne représente le pourcentage d'échantillons pour ce symbole relatif à l'ensemble des échantillons de l'exécutable. La quatrième colonne représente, elle, le nom du symbole.
Pour trier la sortie du nombre d'échantillons le plus grand au plus petit (ordre inverse), utilisez -r avec l'option -l.
Affiche les données d'échantillons spécifiques à un nom de symbole. Par exemple, la sortie suivante est obtenue en exécutant la commande oprofpp -s StandardReadRequestFromClient /usr/X11R6/bin/XFree86 :
vma samples % symbol name 080e1360 12 100 StandardReadRequestFromClient 080e1360 1 8.33333 080e137f 1 8.33333 080e13bb 1 8.33333 080e13f4 1 8.33333 080e13fb 1 8.33333 080e144a 1 8.33333 080e15aa 1 8.33333 080e1668 1 8.33333 080e1803 1 8.33333 080e1873 1 8.33333 080e190a 2 16.6667 |
La première ligne est un résumé de la combinaison symbole/exécutable.
La première colonne représente les adresses de mémoire virtuelle échantillonnées. La seconde colonne représente le nombre d'échantillons pour l'adresse de mémoire. La troisième colonne représente le pourcentage d'échantillons pour l'adresse de mémoire relatif au nombre total d'échantillons pour le symbole.
Affiche les données d'échantillons avec de plus amples informations que -l. Par exemple :
vma samples % symbol name 08083630 2 1.51515 xf86Wakeup 08083641 1 50 080836a1 1 50 080b8150 1 0.757576 Ones 080b8179 1 100 080b8fb0 2 1.51515 FlushClientCaches 080b8fb9 1 50 080b8fba 1 50 ... |
Les données sont les mêmes qu'avec l'option -l sauf que chaque adresse de mémoire virtuelle utilisée est affichée pour chaque symbole. Pour chacune d'entre elles, le nombre d'échantillons et le pourcentage d'échantillons relatif au nombre d'échantillons pour le symbole sont affichés.
Génère la sortie vers un fichier sous le format gprof. Si le fichier produit est nommé gmon.out, gprof peut être utilisé pour analyser les données plus en détails. Consultez la page de manuel associée à gprof afin d'obtenir de plus amples informations.
Voici d'autres options disponibles pour restreindre davantage les données :
Utilise le fichier d'échantillons spécifié <file-name>. Par défaut, le fichier d'échantillons dans /var/lib/oprofile/samples/ est utilisé. Utilisez cette option afin de spécifier le fichier d'échantillons d'une session précédente.
Utilise <file-name> comme le nom de l'exécutable pour lequel récupérer les données.
Décode les noms de symboles C++.
Décode les noms de symboles C++ et simplifie les nom décodés de bibliothèque STL.
Recueille des informations sur un compteur donné. Le compteur par défaut est 0 si il n'est pas spécifié.
Affiche les numéros de ligne dans le code source pour chaque échantillon. Lorsque l'exécutable a compilé, l'option -g de GCC aurait dû être utilisée. Dans le cas contraire, cette option ne peut pas afficher les numéros de ligne. Aucun exécutable de Red Hat Enterprise Linux n'est compilé avec cette option par défaut.
vma samples % symbol name linear info 0806cbb0 0 0 _start ../sysdeps/i386/elf/start.S:47 |
Exclut la liste de symboles séparés par des virgules de la sortie.
Affiche une colonne supplémentaire contenant la bibliothèque partagée. Cette option ne produit des résultats que si l'option --separate=library de opcontrol est spécifiée lors de la configuration de OProfile et si l'option --dump-gprof-file n'est pas utilisée avec celle-ci.
Affiche la sortie selon un ordre spécifique de colonnes. Cette option ne peut pas être utilisée avec -g.
Utilisez les lettres suivantes pour représenter les colonnes :
Lettre | Description |
---|---|
v | Adresse de mémoire virtuelle |
s | Nombre d'échantillons |
S | Nombre cumulé d'échantillons |
p | Pourcentage d'échantillons relatif au nombre total d'échantillons pour l'exécutable |
P | Pourcentage cumulé d'échantillons relatif au nombre total d'échantillons pour l'exécutable |
q | Pourcentage d'échantillons relatif à tous les exécutables échantillonnés |
Q | Pourcentage cumulé d'échantillons relatif à tous les exécutables échantillonnés |
n | Nom de symbole |
l | Nom du fichier source et numéro de ligne, y compris le chemin complet |
L | Nom de base du fichier de code source et numéro de ligne |
i | Nom de l'exécutable, y compris le chemin complet |
I | Nom de base de l'exécutable |
d | Détails de l'échantillon |
h | Affiche les en-têtes de colonnes |
Tableau 43-4. Lettres pour l'ordre de colonnes
Spécifie le chemin complet à la session ou à un répertoire associé au répertoire /var/lib/oprofile/samples/.
Spécifie une liste de chemins séparés par des virgules où les exécutables à analyser se trouvent.
L'outil op_to_source essaie de faire correspondre les échantillons pour certaines instructions à des lignes correspondantes dans le code source. Les fichiers résultants devraient avoir les échantillons pour les lignes sur la gauche. Un commentaire est également ajouté au début de chaque fonction affichant tous les échantillons pour la fonction.
Afin que cet utilitaire fonctionne, l'exécutable doit être compilé avec l'option -g de GCC. Par défaut, les paquetages de Red Hat Enterprise Linux ne sont pas compilés avec cette option.
La syntaxe générale pour op_to_source est la suivante :
op_to_source --source-dir <src-dir> <executable> |
Le répertoire contenant le code source et l'exécutable à analyser doivent être spécifiés. Consultez la page de manuel relative à op_to_source afin d'obtenir une liste d'options de ligne de commande supplémentaires.
Si plusieurs fichiers d'échantillons existent pour exactement le même exécutable ou la même bibliothèque, les fichiers d'échantillons peuvent être fusionnés pour faciliter l'analyse.
Par exemple, pour fusionner des fichiers pour la bibliothèque /usr/lib/library-1.2.3.so, exécutez la commande suivante en tant que super-utilisateur :
op_merge /usr/lib/library-1.2.3.so |
Le fichier résultant est /var/lib/oprofile/samples/}usr}lib}library-1.2.3.so.
Pour limiter les échantillons fusionnés à un compteur donné, utilisez l'option -c suivie du numéro de compteur.
Précédent | Sommaire | Suivant |
Sauvegarde de données | Niveau supérieur | Le répertoire /dev/profile/ |