2.5. Informations spécifiques à Red Hat Enterprise Linux

Red Hat Enterprise Linux offre une variété d'outils de contrôle des ressources. Bien que la liste ne se limite pas aux outils énumérés ci-après, ils représentent des bons exemples au niveau de leur fonctionnalité respective. Parmi ces outils figurent :

Examinons chacun de ces outils de manière plus détaillée.

2.5.1. free

La commande free affiche l'utilisation de la mémoire du système. Ci-dessous figure un exemple de cette sortie :

             total       used       free     shared    buffers     cached
Mem:        255508     240268      15240          0       7592      86188
-/+ buffers/cache:     146488     109020
Swap:       530136      26268     503868

La rangée Mem: correspond à l'utilisation de la mémoire physique alors que la rangée Swap: représente l'utilisation de l'espace swap du système et que la rangée -/+ buffers/cache: donne elle la quantité de mémoire physique actuellement consacrée aux tampons du système.

Étant donné que free ne fournit par défaut qu'une seule fois, des informations sur l'utilisation de la mémoire, cette commande n'est vraiment utile que pour un contrôle à très court terme ou pour déterminer s'il existe actuellement un problème au niveau de la mémoire. Bien que la commande free puisse, au moyen de l'option -s, afficher des informations chiffrées sur l'utilisation de mémoire, ces dernières défilent si rapidement qu'il est assez difficile de remarquer tout changement dans l'utilisation de la mémoire.

TuyauAstuce
 

Une meilleure alternative à free -s consisterait à exécuter free à l'aide de la commande watch. Par exemple, afin d'obtenir l'affichage de l'utilisation de mémoire toutes les deux secondes (l'intervalle d'affichage par défaut de watch), utilisez la commande suivante :

watch free

La commande watch exécute free toutes les deux secondes, après avoir auparavant effacé l'écran. Ainsi, il est beaucoup plus facile de déterminer la manière selon laquelle l'utilisation de la mémoire change au fil du temps car il n'est pas nécessaire de parcourir la sortie qui défile en permanence. Il est également possible de contrôler l'intervalle entre les mises à jour en utilisant l'option -n et même grâce à l'option -d de modifier l'affichage de manière à ce que toute différence entre les mises à jour apparaisse en caractères gras, comme le ferait la commande suivante :

watch -n 1 -d free

Pour obtenir de plus amples informations sur le sujet, reportez-vous à la page de manuel de watch.

La commande watch tourne jusqu'à ce qu'elle soit interrompue par la combinaison de touches [Ctrl]-[C]. Il est bon de garder à l'esprit la commande watch, car elle peut être très utile dans de nombreuses situations.

2.5.2. top

Alors que free affiche seulement des informations relatives à la mémoire, la commande top elle fournit des informations très variées. Qu'il s'agisse de l'utilisation du CPU, des statistiques sur les processus ou de l'utilisation de la mémoire — top contrôle le tout. De plus, contrairement à la commande free, le comportement par défaut de top fait qu'elle est exécutée en permanence si bien qu'il n'y a pas lieu d'utiliser la commande watch. Ci-après figure un example d'affichage fourni par cette commande :

 14:06:32  up 4 days, 21:20,  4 users,  load average: 0.00, 0.00, 0.00
77 processes: 76 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
           total   19.6%    0.0%    0.0%   0.0%     0.0%    0.0%  180.2%
           cpu00    0.0%    0.0%    0.0%   0.0%     0.0%    0.0%  100.0%
           cpu01   19.6%    0.0%    0.0%   0.0%     0.0%    0.0%   80.3%
Mem:  1028548k av,  716604k used,  311944k free,       0k shrd,  131056k buff
                    324996k actv,  108692k in_d,   13988k in_c
Swap: 1020116k av,    5276k used, 1014840k free                  382228k cached
                                                                                
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
17578 root      15   0 13456  13M  9020 S    18.5  1.3  26:35   1 rhn-applet-gu
19154 root      20   0  1176 1176   892 R     0.9  0.1   0:00   1 top
    1 root      15   0   168  160   108 S     0.0  0.0   0:09   0 init
    2 root      RT   0     0    0     0 SW    0.0  0.0   0:00   0 migration/0
    3 root      RT   0     0    0     0 SW    0.0  0.0   0:00   1 migration/1
    4 root      15   0     0    0     0 SW    0.0  0.0   0:00   0 keventd
    5 root      34  19     0    0     0 SWN   0.0  0.0   0:00   0 ksoftirqd/0
    6 root      35  19     0    0     0 SWN   0.0  0.0   0:00   1 ksoftirqd/1
    9 root      15   0     0    0     0 SW    0.0  0.0   0:07   1 bdflush
    7 root      15   0     0    0     0 SW    0.0  0.0   1:19   0 kswapd
    8 root      15   0     0    0     0 SW    0.0  0.0   0:14   1 kscand
   10 root      15   0     0    0     0 SW    0.0  0.0   0:03   1 kupdated
   11 root      25   0     0    0     0 SW    0.0  0.0   0:00   0 mdrecoveryd

Comme vous pouvez le voir, l'affichage est divisé en deux sections. La partie supérieure contient des informations relatives à l'état général du système — durée de fonctionnement, charge moyenne, décompte des processus, état du CPU et statistiques sur l'utilisation de la mémoire et de l'espace swap. La partie inférieure quant à elle fournit des statistiques au niveau des processus ; la nature de ces dernières peut être modifiée alors même que le commande top est en cours d'exécution. Par exemple, top affiche seulement les processus, même si un processus est multi-fils. Afin d'afficher les fils individuels (parfois appelés thread), appuyez sur la touche [H] ; en pressant une deuxième fois, l'affichage retourne au mode d'affichage par défaut.

AvertissementAvertissement
 

Bien que top apparaisse comme étant seulement un simple programme d'affichage, ce n'est pas le cas. Cette misconception s'explique par le fait que top utilise des commandes à caractère unique pour effectuer certaines opérations. Par exemple, si vous êtes connecté en tant que super-utilisateur, il est possible de changer la priorité et même de mettre fin à tout processus sur votre système. Il est par conséquent plus sûr de vous limiter à l'utilisation de [q] (pour quitter top) jusqu'à ce que vous ayez passé en revue l'écran d'assistance de la commande top (tapez [?] pour faire apparaître ce dernier).

2.5.2.1. Le Moniteur système de GNOME — Une commande top graphique

Si vous vous sentez plus à l'aise avec des interfaces utilisateur graphiques, le Moniteur système de GNOME vous conviendra peut-être mieux. Tout comme top, le Moniteur système de GNOME affiche des informations sur l'état général du système, les décomptes de processus, l'utilisation de la mémoire et du swap et les statistiques au niveau des processus.

Toutefois, le Moniteur système de GNOME va encore plus loin dans le sens où il inclut des représentations graphiques du CPU, de l'utilisation de la mémoire et du swap ainsi qu'un listage sous forme de tableau de l'utilisation de l'espace disque. Pour examiner un exemple de la Liste des processus dressée par le Moniteur système de GNOME, reportez-vous à la Figure 2-1.

Figure 2-1. Affichage de la Liste des processus par le Moniteur système de GNOME

Il est possible d'afficher des informations supplémentaires pour un processus spécifique en cliquant d'abord sur le processus en question avant de sélectionner le bouton Plus d'info.

Pour afficher des statistiques relatives au CPU, à la mémoire et à l'utilisation du disque, cliquez sur l'onglet Moniteur système.

2.5.3. vmstat

Pour une meilleure compréhension de la performance du système, vous pouvez utiliser vmstat. Ce moniteur de ressources permet d'obtenir en une ligne de nombres, un aperçu de l'activité des processus, de la mémoire, du swap, des E/S et du CPU, comme le montre l'extrait reproduit ci-dessous :

procs                      memory      swap          io     system         cpu
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0   5276 315000 130744 380184    1    1     2    24   14    50  1  1 47  0
        

La première ligne subdivise le champ en six catégories à savoir :processus, mémoire, swap, E/S, système et CPU sur lesquelles elle donne des statistiques. La seconde ligne elle identifie de manière encore plus détaillée chacun des champs, permettant ainsi de parcourir simplement et rapidement l'ensemble des données lors de la recherche de statistiques spécifiques.

Les champs relatifs aux processus sont les suivants :

Les champs relatifs à la mémoire sont les suivants :

Les champs relatifs au swap sont les suivants :

Les champs relatifs aux Entrées/Sorties (E/S) sont les suivants :

Les champs relatifs au système sont les suivants :

Les champs relatifs au CPU sont les suivants :

Lorsque la commande vmstat est utilisée sans aucune option, une seule ligne est affichée fournissant des moyennes calculées sur la base du moment auquel le dernier démarrage a eu lieu.

Toutefois, la plupart des administrateurs système ne se basent pas vraiment sur les données fournies sur cette ligne dans la mesure où la durée au cours de laquelle elles ont été recueillies varie. Ils préfèrent profiter de la capacité de vmstat à afficher de manière répétée et à intervalles définis des données sur l'utilisation des ressources. Par exemple, la commande vmstat 1 affiche une nouvelle ligne de données sur l'utilisation toutes les secondes, alors que la commande vmstat 1 10 fournit elle aussi une nouvelle ligne par seconde mais seulement pour les dix secondes suivantes.

Entre les mains d'un administrateur expérimenté, la commande vmstat peut être utilisée pour cerner rapidement des problèmes d'utilisation de ressource ou de performance. Toutefois, afin d'obtenir une compréhension plus approfondie de ces problèmes, un type d'outil différent est nécessaire — un outil capable de recueillir et d'analyser des données de manière plus détaillée.

2.5.4. Sysstat, la suite d'outils de contrôle des ressources

Alors que les outils précédents peuvent se révéler utiles pour obtenir une certaine compréhension de la performance du système sur de courtes durées, ils ne fournissent qu'un bref aperçu de l'utilisation des ressources du système. En outre, certains aspects de la performance du système ne peuvent pas être facilement contrôlés par ces outils relativement primaires.

Un outil plus sophistiqué est par conséquent nécessaire, d'où Sysstat.

Pour le recueil de statistiques sur les E/S et le CPU, Sysstat contient les outils suivants :

iostat

Affiche une vue d'ensemble de l'utilisation CPU ainsi que des statistiques d'E/S pour un ou plusieurs disque(s) dur(s).

mpstat

Affiche des statistiques plus détaillées sur le CPU.

Sysstat contient également des outils recueillant des données sur l'utilisation des ressources système et créant des rapports quotidiens basés sur les données recueillies. Parmi ces outils figurent :

sadc

Connu comme le collecteur de données sur l'activité du système, sadc recueille des informations relatives à l'utilisation des ressources système et les enregistrent dans un fichier.

sar

Génère des rapports à partir des fichiers créés par sadc ; ces rapports sar peuvent être produits de manière interactive ou écrits dans un fichier qui fera l'objet d'une analyse plus approfondie.

Les sections suivantes examinent chacun des ces outils de manière plus détaillée.

2.5.4.1. La commande iostat

La commande iostat dans son utilisation la plus élémentaire fournit une vue d'ensemble des statistiques du CPU et des E/S de disque.

Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com)      07/11/2003

avg-cpu:  %user   %nice    %sys   %idle
           6.11    2.56    2.15   89.18

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
dev3-0            1.68        15.69        22.42   31175836   44543290
          

Au-dessous de la première ligne (indiquant la version du noyau du système et son nom d'hôte ainsi que la date actuelle) iostat affiche une vue d'ensemble de l'utilisation CPU moyenne du système depuis le dernier démarrage. Le rapport d'utilisation du CPU inclut les pourcentages suivants :

  • Pourcentage du temps passé en mode utilisateur (exécutant des applications, etc.)

  • Pourcentage du temps passé en mode utilisateur (pour les processus qui ont modifié leur priorité de programmation à l'aide de la commande nice(2))

  • Pourcentage du temps passé en mode noyau

  • Pourcentage du temps passé en inactivité

Au-dessous du rapport d'utilisation du CPU figure le rapport d'utilisation des périphériques. Ce dernier contient une ligne pour chaque périphérique disque du système et inclut les informations suivantes :

  • La spécification du périphérique, apparaissant sous la forme dev<major-number>-sequence-number<major-number> correspond au nombre majeur du périphérique [1] et <sequence-number> à un numéro de série dont le premier élément est zéro.

  • Le nombre de transferts (ou opérations d'E/S) par seconde.

  • Le nombre de blocs de 512 octets lus par seconde.

  • Le nombre de blocs de 512 octets écrits par seconde.

  • Le nombre total de blocs de 512 octets lus par seconde.

  • Le nombre total de blocs de 512 octets écrits par seconde.

Ces exemples ne représentent qu'un échantillon des informations pouvant être obtenues à l'aide de iostat. Pour de plus amples informations sur le sujet, reportez-vous à la page de manuel de iostat(1).

2.5.4.2. La commande mpstat

Au premier abord, la commande mpstat semble fournir des informations semblables à celles incluses dans le rapport d'utilisation du CPU produit par iostat, comme le montre l'extrait ci-dessous :

Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com)      07/11/2003

07:09:26 PM  CPU   %user   %nice %system   %idle    intr/s
07:09:26 PM  all    6.40    5.84    3.29   84.47    542.47
          

En fait, à l'exception d'une colonne supplémentaire fournissant des informations sur les interruptions traitées par le CPU toutes les secondes, il n'existe pas vraiment de différence entre les deux commandes. Toutefois, si l'option -P ALL est utilisée avec la commande mpstat, la situation est alors différente, comme le montre l'extrait suivant :

Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com)      07/11/2003

07:13:03 PM  CPU   %user   %nice %system   %idle    intr/s
07:13:03 PM  all    6.40    5.84    3.29   84.47    542.47
07:13:03 PM    0    6.36    5.80    3.29   84.54    542.47
07:13:03 PM    1    6.43    5.87    3.29   84.40    542.47
          

Sur des systèmes à processeurs multiples, mpstat permet d'afficher l'utilisation de chaque CPU de manière individuelle, si bien qu'il est alors possible de déterminer le degré d'efficacité selon lequel chaque CPU est utilisé.

2.5.4.3. La commande sadc

Comme nous l'avons mentionné précédemment, la commande sadc recueille des données sur l'utilisation du système et les enregistre ensuite dans un fichier pour une analyse ultérieure. Par défaut, les données sont écrites dans des fichiers faisant partie du répertoire /var/log/sa/. Ces derniers se nomment sa<dd><dd> correspond au jour actuel dont la date est exprimée en fonction de deux caractères.

La commande sadc est normalement exécutée par le script sa1. Ce dernier est invoqué périodiquement par cron par le biais du fichier sysstat qui se trouve dans /etc/cron.d/. Le script sa1 invoque sadc pour un seul intervalle d'évaluation durant une seconde. Par défaut, cron exécute sa1 toutes les 10 minutes et ajoute les données recueillies lors de chaque intervalle au fichier courant nommé /var/log/sa/sa<dd>.

2.5.4.4. La commande sar

La commande sar crée des rapports sur l'utilisation du système en fonction des données recueillies par sadc. Conformément à la manière dont elle a été configurée dans Red Hat Enterprise Linux, la commande sar est automatiquement exécutée pour traiter les fichiers recueillis automatiquement par sadc. Les fichiers du rapport qui sont écrits dans /var/log/sa/ se nomment sar<dd><dd> correspond au jour précédent dont la date est exprimée en fonction de deux caractères.

La commande sar est normalement exécutée par le script sa2. Ce dernier est invoqué périodiquement par cron par le biais du fichier sysstat qui se trouve dans /etc/cron.d/. Par défaut, cron exécute sa2 une fois par jour à 23:53, ce qui lui permet de créer un rapport prenant en compte les données recueillies au cours de la journée entière.

2.5.4.4.1. Lecture des fichiers sar

Le format d'un rapport sar créé selon la configuration par défaut de Red Hat Enterprise Linux se présente en plusieurs sections. Chacune d'elle contient un type spécifique de données, classées en fonction du moment auquel elles ont été recueillies pendant la journée. Étant donné que la commande sadc est configurée de manière à effectuer un intervalle d'évaluation d'une durée fixée à une seconde toutes les dix minutes, le rapport par défaut de sar contient des données par incréments de 10 minutes, commençant à 00:00 et finissant à 23:50[2].

Chaque section de ce rapport commence par une en-tête spécifiant le type de données qu'elle contient. Cette en-tête est répétée à différents intervalles dans cette section, permettant ainsi d'examiner facilement les données tout en parcourant le rapport. Chaque section se termine par une ligne exprimant la moyenne des données rapportées dans cette section.

Ci-après figure l'exemple d'une section provenant d'un rapport créé par sar, dans lequel les données recueillies entre 00:30 et 23:40 ont été supprimées afin d'économiser de la place :

00:00:01          CPU     %user     %nice   %system     %idle
00:10:00          all      6.39      1.96      0.66     90.98
00:20:01          all      1.61      3.16      1.09     94.14
…
23:50:01          all     44.07      0.02      0.77     55.14
Average:          all      5.80      4.99      2.87     86.34
            

Dans cette section figurent les informations relatives à l'utilisation du CPU. Le contenu est en fait très proche des données fournies par la commande iostat.

Il est possible que d'autres sections comportent plus d'une ligne de données à la fois, comme le montre la section suivante générée d'après les données relatives à l'utilisation du CPU, recueillies sur un systèmes à double processeur :

00:00:01          CPU     %user     %nice   %system     %idle
00:10:00            0      4.19      1.75      0.70     93.37
00:10:00            1      8.59      2.18      0.63     88.60
00:20:01            0      1.87      3.21      1.14     93.78
00:20:01            1      1.35      3.12      1.04     94.49
…
23:50:01            0     42.84      0.03      0.80     56.33
23:50:01            1     45.29      0.01      0.74     53.95
Average:            0      6.00      5.01      2.74     86.25
Average:            1      5.61      4.97      2.99     86.43
            

Les rapports générés selon la configuration par défaut de sar sous Red Hat Enterprise Linux incluent au total dix-sept sections différentes, dont certaines seront examinées dans des chapitres ultérieurs. Pour de plus amples informations sur les données contenues dans chaque section, reportez-vous à la page de manuel de sar(1).

2.5.5. OProfile

OProfile, le profileur de tout le système, est un outil de contrôle fonctionnant avec un temps de gestion court. Il utilise le matériel de contrôle de la performance du processeur[3].

Le matériel de contrôle de la performance fait partie du processeur lui-même. Il se présente sous la forme d'un compteur spécial incrémenté après chaque événement (comme lorsque le processeur est occupé ou que les données ne sont pas stockées dans un cache). Certains processeurs sont dotés de plusieurs compteurs de ce type et permettent donc de réserver chaque compteur pour un type d'événement particulier.

Les compteurs peuvent être initialisés avec une certaine valeur de départ et une interruption est engendrée quand un compteur atteint sa limite. En donnant à un compteur des valeurs initiales différentes, il est possible d'obtenir une variation du taux auquel les interruptions sont produites. De cette manière, il est également possible de contrôler la fréquence d'échantillonnage et par conséquent le degré de détail obtenu à partir des données recueillies.

Un choix extrême consistant à initialiser le compteur de sorte qu'il engendre une interruption de dépassement après chaque événement, fournirait des données de performance extrêmement détaillées (mais au prix d'un temps de gestion très long). Un choix extrême mais dans le sens inverse consistant à initialiser le compteur de sorte qu'il engendre aussi peu d'interruption que possible, ne donnerait lui en revanche qu'une vue d'ensemble très générale de la performance du système (mais avec un temps système quasiment inexistant). Le secret d'un contrôle efficace réside dans le choix d'une fréquence d'échantillonnage suffisamment élevée pour saisir les données requises mais sans être trop élevée, au point de surcharger le système avec un temps de gestion excessif nécessaire pour pouvoir effectuer le contrôle de la performance.

AvertissementAvertissement
 

La configuration de OProfile peut être effectuée de telle sorte que le profileur impose un temps de gestion suffisant pour que le système soit inutilisable. Il est par conséquent important de choisir les valeurs du compteur avec beaucoup de prudence. C'est la raison pour laquelle la commande opcontrol prend en charge l'option --list-events qui permet d'afficher les différents types d'événements disponibles pour le processeur actuellement installé, ainsi que les valeurs du compteur recommandées pour chacun d'eux.

Lors de l'utilisation de OProfile, il est important de garder à l'esprit le compromis nécessaire entre la fréquence d'échantillonnage et le temps de gestion du système.

2.5.5.1. Composants de OProfile

Oprofile est constitué des composants suivants :

  • Logiciel de recueil de données

  • Logiciel d'analyse de données

  • Logiciel de l'interface administrative

Le logiciel de recueil de données est composé du module de noyau oprofile.o et du démon oprofiled.

Le logiciel d'analyse des données quant à lui inclut les programmes suivants :

op_time

Affiche le nombre et les pourcentages relatifs des échantillons pris pour chaque fichier exécutable

oprofpp

Affiche le nombre et les pourcentages relatifs des échantillons pris par fonction, instruction individuelle ou en sortie de type gprof

op_to_source

Affiche des listes de codes sources annotés et/ou d'assemblages

op_visualise

Affiche sous forme graphique les données recueillies

Grâce à ces programmes, il est possible d'afficher les données recueillies de plusieurs manières différentes.

Le logiciel de l'interface administrative contrôle tous les aspects liés au recueil de données, de la spécification des événements à contrôler au commencement et à l'arrêt des opérations de recueil elles-mêmes. La commande opcontrol permet de déterminer ces différents aspects.

2.5.5.2. Exemple d'une session de OProfile

Cette section illustre une session de contrôle et d'analyse des données avec OProfile, allant de la configuration initiale à l'analyse finale des données. Cet exemple n'est autre qu'un bref aperçu fourni à titre d'introduction ; pour obtenir des informations plus détaillées, consultez le Guide d'administration système de Red Hat Enterprise Linux.

Ensuite, utilisez opcontrol pour configurer le type de données à recueillir à l'aide de la commande suivante :

opcontrol \
    --vmlinux=/boot/vmlinux-`uname -r` \
    --ctr0-event=CPU_CLK_UNHALTED \
    --ctr0-count=6000

Les options utilisées ici demande à opcontrol de :

  • Diriger OProfile vers une copie du noyau actuellement en cours d'exécution (--vmlinux=/boot/vmlinux-`uname -r`)

  • Spécifier que le compteur 0 du processeur doit être utilisé et que l'événement à contrôler est le moment où le CPU exécute des instructions (--ctr0-event=CPU_CLK_UNHALTED)

  • Spécifier que OProfile doit recueillir des échantillons chaque fois que l'évènement spécifié a été effectué 6000 fois (--ctr0-count=6000)

Vérifiez en suite que le module noyau de oprofile est bien chargé à l'aide de la commande lsmod dont la sortie figure ci-dessous :

Module                  Size  Used by    Not tainted
oprofile               75616   1
…

Confirmez que le système de fichiers de OProfile (situé dans /dev/oprofile/) est bien monté avec la commande ls /dev/oprofile/ dont la sortie figure ci-dessous :

0  buffer       buffer_watershed  cpu_type  enable       stats
1  buffer_size  cpu_buffer_size   dump      kernel_only

(Le nombre exact de fichiers varie selon le type de processeur).

À ce stade, le fichier /root/.oprofile/daemonrc contient les paramétrages dont le logiciel de recueil de données a besoin, comme le montre l'extrait ci-dessous :

CTR_EVENT[0]=CPU_CLK_UNHALTED
CTR_COUNT[0]=6000
CTR_KERNEL[0]=1
CTR_USER[0]=1
CTR_UM[0]=0
CTR_EVENT_VAL[0]=121
CTR_EVENT[1]=
CTR_COUNT[1]=
CTR_KERNEL[1]=1
CTR_USER[1]=1
CTR_UM[1]=0
CTR_EVENT_VAL[1]=
one_enabled=1
SEPARATE_LIB_SAMPLES=0
SEPARATE_KERNEL_SAMPLES=0
VMLINUX=/boot/vmlinux-2.4.21-1.1931.2.349.2.2.entsmp

Utilisez ensuite opcontrol pour effectivement commencer à recueillir des données à l'aide de la commande opcontrol --start dont la sortie figure ci-dessous :

Using log file /var/lib/oprofile/oprofiled.log
Daemon started.
Profiler running.

Vérifiez que le démon oprofiled est bien en cours d'exécution à l'aide de la commande ps x | grep -i oprofiled dont la sortie figure ci-dessous :

32019 ?        S      0:00 /usr/bin/oprofiled --separate-lib-samples=0 …
32021 pts/0    S      0:00 grep -i oprofiled

(Le ligne de commande oprofiled que ps affiche est en réalité beaucoup plus longue mais elle a dû être tronquée ici pour des raisons de formatage.)

Le système est désormais sous surveillance et des données sont recueillies sur tous les exécutables figurant sur le système. Ces données sont ensuite stockées dans le répertoire /var/lib/oprofile/samples/. Les fichiers contenus dans ce dernier font l'objet d'une convention de nommage quelque peu inhabituelle, comme l'illustre l'exemple ci-dessous :

}usr}bin}less#0

La convention de nommage utilise certes le chemin d'accès absolu pour chaque fichier contenant un code exécutable, mais la barre oblique avant (/) est remplacée par des accolades de fermeture (}) et il se finit avec le symbole dièse (#) suivi d'un nombre (0 dans le cas présent). Par conséquent, le fichier utilisé dans notre exemple correspond à des données qui ont été recueillies alors que /usr/bin/less était en cours d'exécution.

Une fois les données recueillies, utilisez un de ces outils d'analyse pour les afficher. En matière de contrôle, OProfile est dotée d'une excellente fonctionnalité à savoir, il n'est pas nécessaire d'interrompre le recueil des données avant de pouvoir effectuer une analyse de données. Toutefois, il faut attendre qu'au moins un groupe d'échantillons soit écrit sur le disque  mais il est tout à fait possible de forcer le transfert des échantillons sur disque à l'aide de la commande opcontrol --dump.

Dans l'exemple suivant, la commande op_time est utilisée pour afficher (dans l'ordre inverse — du nombre le plus élevé d'échantillons au nombre le plus bas) les échantillons qui ont été recueillis :

3321080   48.8021  0.0000 /boot/vmlinux-2.4.21-1.1931.2.349.2.2.entsmp
761776    11.1940  0.0000 /usr/bin/oprofiled
368933     5.4213  0.0000 /lib/tls/libc-2.3.2.so
293570     4.3139  0.0000 /usr/lib/libgobject-2.0.so.0.200.2
205231     3.0158  0.0000 /usr/lib/libgdk-x11-2.0.so.0.200.2
167575     2.4625  0.0000 /usr/lib/libglib-2.0.so.0.200.2
123095     1.8088  0.0000 /lib/libcrypto.so.0.9.7a
105677     1.5529  0.0000 /usr/X11R6/bin/XFree86
…

Étant donné que les rapports peuvent s'étendre sur plusieurs centaines de lignes, il est judicieux d'utiliser l'option less lorsqu'un rapport est crée de manière interactive. Le rapport reproduit dans notre exemple a d'ailleurs été tronqué pour cette raison.

Selon le format utilisé pour la création de ce rapport spécifique, une ligne est réservée pour chaque fichier exécutable dont les données en été recueillies. Chaque ligne suit ce format particulier, comme le montre l'extrait suivant :

<sample-count> <sample-percent> <unused-field> <executable-name> 

où :

  • <sample-count> correspond au nombre d'échantillons recueillies

  • <sample-percent> correspond au pourcentage de tous les échantillons recueillis pour cet exécutable spécifique

  • <unused-field> représente un champ qui n'est pas utilisé

  • <executable-name> correspond au nom du fichier contenant le code de l'exécutable pour lequel les données ont été recueillies.

Ce rapport (créé sur un système essentiellement inoccupé) montre que presque la moitié de tous les échantillons ont été recueillis alors que le CPU exécutait des codes au sein du noyau lui-même. Le démon de recueil de données OProfile était le premier élément mis en attente, suivi par une variété de bibliothèques et le serveur du Système X Window, XFree86. Il est important de noter ici que pour le système exécutant cette session, la valeur de 6000 utilisée pour le compteur correspond à la valeur minimale recommandée par opcontrol --list-events. Dans de telles conditions — au moins pour ce système particulier — le temps de gestion de OProfile à son niveau le plus élevé, consomme environ 11% du CPU.

Notes

[1]

Les nombres majeurs des périphériques peuvent être obtenus en utilisant ls -l pour afficher le fichier de périphériques souhaité se trouvant dans /dev/. Ci-après figure un exemple de sortie renvoyée par ls -l /dev/hda:

  brw-rw---- 1 root disk 3, 0 Aug 30 19:31 /dev/hda  

Le nombre majeur dans cet exemple est 3 et apparaît entre le groupe du fichier et son numéro mineur.

[2]

En raison des variations des charges du système, il se peut que l'heure exacte à laquelle les données sont recueillies varie d'une ou deux secondes.

[3]

OProfile peut également utiliser un autre mécanisme (appelé TIMER_INT) pouvant être utilisé pour les architectures de systèmes qui ne disposent pas de matériel pour le contrôle de la performance.