Red Hat Enterprise Linux 3: Introduction à l'administration système | ||
---|---|---|
Précédent | Chapitre 2. Contrôle des ressources | Suivant |
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 :
free
top (et le Moniteur système de GNOME, une version de top aux caractéristiques plus graphiques)
vmstat
Sysstat, la suite d'outils de contrôle des ressources
OProfile, le profileur de tout le système
Examinons chacun de ces outils de manière plus détaillée.
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.
![]() | Astuce | ||
---|---|---|---|
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 :
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 :
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 |
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
![]() | Avertissement |
---|---|
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 |
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.
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.
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 :
r — Le nombre de processus exécutables attendant d'avoir accès au CPU
b — Le nombre de processus exécutables dans un état de veille qui ne peut être interrompu
Les champs relatifs à la mémoire sont les suivants :
swpd — La quantité de mémoire virtuelle utilisée
free — La quantité de mémoire libre
buff — La quantité de mémoire utilisée par les tampons (ou buffers)
cache — La quantité de mémoire utilisée comme cache de pages
Les champs relatifs au swap sont les suivants :
si — La quantité de mémoire chargée depuis le disque
so — La quantité de mémoire déchargée sur le disque
Les champs relatifs aux Entrées/Sorties (E/S) sont les suivants :
bi — Blocs envoyés vers un périphérique blocs
bo— Blocs reçus d'un périphérique blocs
Les champs relatifs au système sont les suivants :
in — Nombre d'interruptions par seconde
cs — Nombre de changements de contexte par seconde
Les champs relatifs au CPU sont les suivants :
us — Le pourcentage de temps pendant lequel le CPU exécute un code de niveau utilisateur
sy — Le pourcentage de temps pendant lequel le CPU exécute un code de niveau système
id — Le pourcentage de temps pendant lequel le CPU était inoccupé
wa — Attente d'E/S
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.
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 :
Affiche une vue d'ensemble de l'utilisation CPU ainsi que des statistiques d'E/S pour un ou plusieurs disque(s) dur(s).
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 :
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.
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.
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 où <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).
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é.
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> où <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>.
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> où <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.
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).
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.
![]() | Avertissement |
---|---|
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.
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 :
Affiche le nombre et les pourcentages relatifs des échantillons pris pour chaque fichier exécutable
Affiche le nombre et les pourcentages relatifs des échantillons pris par fonction, instruction individuelle ou en sortie de type gprof
Affiche des listes de codes sources annotés et/ou d'assemblages
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.
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.
[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:
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. |
Précédent | Sommaire | Suivant |
Que contrôler ? | Niveau supérieur | Ressources supplémentaires |