Red Hat Enterprise Linux 3: Introduction à l'administration système | ||
---|---|---|
Précédent | Chapitre 3. Puissance de traitement et largeur de bande | Suivant |
Sous Red Hat Enterprise Linux, le contrôle de l'utilisation de la largeur de bande et du CPU se fait grâce à l'utilisation des outils examinés dans le Chapitre 2 ; il est par conséquent recommandé de lire ce chapitre (si ce n'est pas déjà fait) avant de poursuivre.
Comme nous l'avons mentionné dans la Section 2.4.2, il est difficile de contrôler directement l'utilisation de la largeur de bande. Néanmoins, en analysant les statistiques au niveau des périphériques, il est possible d'évaluer grossièrement si une largeur de bande insuffisante pose un problème quelconque pour votre système.
Avec vmstat, il est possible de déterminer si l'activité générale des périphériques est excessive, en examinant les champs bi et bo ; en outre, les champs si et so fournissent des informations un peu plus précises sur le degré d'activité du disque résultant des activités d'E/S associées au swap.
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 0 248088 158636 480804 0 0 2 6 120 120 10 3 87 |
Dans l'extrait ci-dessus, le champ bi montre que deux blocs par seconde sont écrits sur les périphériques blocs (essentiellement les disques durs), alors que le champ bo indique lui, que six blocs par seconde sont lus depuis les périphériques blocs. Il est également possible de voir qu'aucune partie de cette activité n'est due à un échange de mémoire (aussi appelé swapping) car les champs si et so montrent tous les deux un taux d'activités d'E/S associé auswap équivalent à zéro kilo-octet/seconde.
En utilisant iostat, il est possible d'obtenir des informations plus précises sur l'activité associée au disque :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 avg-cpu: %user %nice %sys %idle 5.34 4.60 2.83 87.24 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn dev8-0 1.10 6.21 25.08 961342 3881610 dev8-1 0.00 0.00 0.00 16 0 |
Cette sortie montre que le périphérique dont le nombre majeur est 8 (correspondant à /dev/sda, le premier disque SCSI) avait une moyenne légèrement surpérieure à une opération d'E/S par seconde (le champ tsp). La plupart de l'activité d'E/S de ce périphérique était constituée par des opérations d'écriture (le champ Blk_wrtn), avec un peu plus de 25 blocs écrits par seconde (le champ Blk_wrtn/s).
Dans le cas où des informations encore plus détaillées seraient nécessaires, utilisez l'option -x de iostat :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 avg-cpu: %user %nice %sys %idle 5.37 4.54 2.81 87.27 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz /dev/sda 13.57 2.86 0.36 0.77 32.20 29.05 16.10 14.53 54.52 /dev/sda1 0.17 0.00 0.00 0.00 0.34 0.00 0.17 0.00 133.40 /dev/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.56 /dev/sda3 0.31 2.11 0.29 0.62 4.74 21.80 2.37 10.90 29.42 /dev/sda4 0.09 0.75 0.04 0.15 1.06 7.24 0.53 3.62 43.01 |
Outre le fait que les lignes plus longues contiennent plus de champs, la première chose dont il faut se souvenir est que cette sortie d'iostat affiche désormais des statistiques au niveau des partitions de manière individuelle. En utilisant df pour associer les points de montage aux noms de périphériques, il est possible d'utiliser ce rapport pour déterminer par exemple si /home est soumis à une charge excessive.
En fait, la sortie renvoyée par la commande iostat -x est composée de lignes plus longues contenant plus d'informations que l'extrait ci-dessus, comme le montre le reste de chaque ligne reproduit ci-après (notez que la colonne relative aux périphériques faisant partie de l'extrait d'origine, a été rajoutée ici pour permettre une lecture plus facile):
Device: avgqu-sz await svctm %util /dev/sda 0.24 20.86 3.80 0.43 /dev/sda1 0.00 141.18 122.73 0.03 /dev/sda2 0.00 6.00 6.00 0.00 /dev/sda3 0.12 12.84 2.68 0.24 /dev/sda4 0.11 57.47 8.94 0.17 |
Dans cet exemple, il est intéressant de remarquer que /dev/sda2 est la partition swap du système ; il est évident d'après nombreux champs affichant 0.00 que le swapping ne pose aucun problème pour le système.
Le deuxième élément de la colonne de périphériques,/dev/sda1, est un autre élément intéressant en raison des statistiques inhabituelles de cette partition sont ; en effet, l'activité globale semble faible et pourtant, la taille moyenne des requêtes d'E/S (le champ avgrq-sz), le temps d'attente moyen (le champ await) et le temps de service moyen (le champ svctm) sont beaucoup plus importants que pour les autres partitons ; pourquoi ? Parce que cette partition contient le répertoire /boot/, qui est l'endroit où le noyau et le disque de mémoire vive initiale (ramdisk) sont stockés. Lorsque le système démarre, les E/S des opérations de lecture (notez bien que seuls les champs relatifs à rsec/s et rkB/s n'affichent pas de zéros ; d'une manière générale, aucune opération d'écriture n'est effectuée ici) utilisées lors de ce processus se font pour de nombreux blocs, entraînant des temps d'attente et de service relativement longs, comme les affiche iostat.
Il est possible d'utiliser sar pour un affichage à plus long terme des statistiques d'E/S ; la commandesar -b affiche par exemple, un rapport d'E/S général comme le montre l'extrait ci-dessous :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 12:00:00 AM tps rtps wtps bread/s bwrtn/s 12:10:00 AM 0.51 0.01 0.50 0.25 14.32 12:20:01 AM 0.48 0.00 0.48 0.00 13.32 … 06:00:02 PM 1.24 0.00 1.24 0.01 36.23 Average: 1.11 0.31 0.80 68.14 34.79 |
Ici, comme dans l'affichage initial de iostat, les statistiques sont regroupées pour tous les périphériques blocs.
Un autre rapport sur les E/S peut être créé grâce à sar -d, comme le montre l'extrait suivant :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 12:00:00 AM DEV tps sect/s 12:10:00 AM dev8-0 0.51 14.57 12:10:00 AM dev8-1 0.00 0.00 12:20:01 AM dev8-0 0.48 13.32 12:20:01 AM dev8-1 0.00 0.00 … 06:00:02 PM dev8-0 1.24 36.25 06:00:02 PM dev8-1 0.00 0.00 Average: dev8-0 1.11 102.93 Average: dev8-1 0.00 0.00 |
Ce rapport fournit certes des informations périphérique par périphérique, mais de manière relativement superficielle.
Malgré l'absence de statistiques explicites montrant l'utilisation de la largeur de bande pour un chemin des données ou un bus spécifique, il est au moins possible d'une part de voir l'activité des périphériques et d'autre part, d'utiliser cette dernière afin de déterminer indirectement, le chargement du bus.
Contrairement à la largeur de bande, le contrôle de l'utilisation CPU est une tâche relativement simple. Que ce soit grâce à un simple pourcentage d'utilisation CPU dans le Moniteur système de GNOME ou aux statistiques plus détaillées rapportées par la commandesar, il est possible de déterminer d'une part combien de puissance CPU est consommée et d'autre part, quel élément la consomme.
Au-delà du Moniteur système de GNOME, il existe un autre outil de contrôle des ressources à savoir, top, le premier outil abordé dans le Chapitre 2, qui fournit lui, une représentation plus détaillée de l'utilisation CPU. Ci-après figure un rapport établi par la commande top depuis un poste de travail à double processeur :
9:44pm up 2 days, 2 min, 1 user, load average: 0.14, 0.12, 0.09 90 processes: 82 sleeping, 1 running, 7 zombie, 0 stopped CPU0 states: 0.4% user, 1.1% system, 0.0% nice, 97.4% idle CPU1 states: 0.5% user, 1.3% system, 0.0% nice, 97.1% idle Mem: 1288720K av, 1056260K used, 232460K free, 0K shrd, 145644K buff Swap: 522104K av, 0K used, 522104K free 469764K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 30997 ed 16 0 1100 1100 840 R 1.7 0.0 0:00 top 1120 root 5 -10 249M 174M 71508 S < 0.9 13.8 254:59 X 1260 ed 15 0 54408 53M 6864 S 0.7 4.2 12:09 gnome-terminal 888 root 15 0 2428 2428 1796 S 0.1 0.1 0:06 sendmail 1264 ed 15 0 16336 15M 9480 S 0.1 1.2 1:58 rhn-applet-gui 1 root 15 0 476 476 424 S 0.0 0.0 0:05 init 2 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU0 3 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU1 4 root 15 0 0 0 0 SW 0.0 0.0 0:01 keventd 5 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 6 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU1 7 root 15 0 0 0 0 SW 0.0 0.0 0:05 kswapd 8 root 15 0 0 0 0 SW 0.0 0.0 0:00 bdflush 9 root 15 0 0 0 0 SW 0.0 0.0 0:01 kupdated 10 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd |
La première information relative au CPU se trouve sur la toute première ligne : la moyenne de charge. Cette dernière est représentée par un chiffre correspondant au nombre moyen de processus exécutables sur le système. La moyenne de charge est souvent exprimée sous forme de trois groupes de chiffres (de la même manière que top) qui correspondent respectivement à la moyenne de charge de la dernière minute et des 5, 15 dernières minutes ; dans notre exemple, le système n'était pas très occupé.
La ligne suivante, bien que n'étant pas étroitement liée à l'utilisation CPU a tout de même une relation indirecte avec cette dernière, dans la mesure où elle affiche le nombre de processus exécutables (un seul dans le cas présent -- souvenez-vous de ce chiffre car il a une signification particulière dans cet exemple). Le nombre de processus exécutables représente un bon indicateur du degré de limitation dicté par le CPU.
Viennent ensuite deux lignes affichant l'utilisation courante de chacun des deux CPU sur le système. Les statistiques d'utilisation sont ventilées afin de montrer si la prolongation des cycles CPU étaient le résultat d'un traitement au niveau de l'utilisateur ou au niveau du système ; apparaît également ici une statistique indiquant le degré selon lequel le temps CPU a été étendu par les processus aux priorités de programmation modifiées. Finalement, apparaît une statistique relative au temps d'inactivité.
Plus bas dans la section de l'affichage relative aux processus figurent des statistiques montrant que top lui-même est le processus utilisant le plus de puissance CPU ; en d'autres termes, le seul processus sur ce système qui autrement serait autrement, est top prenant une "image" de lui-même.
![]() | Astuce |
---|---|
Il est important de ne pas oublier que l'opération consistant à exécuter un moniteur de système a un impact sur les statistiques d'utilisation des ressources que vous obtenez. Tel est le cas, jusqu'à un certain point, pour tous les moniteurs basés sur des logiciels. |
Afin d'obtenir de plus amples informations sur l'utilisation CPU, il est nécessaire de changer d'outil. En examinant la sortie de vmstat, la vue d'ensemble du système de notre exemple est légèrement différente, comme le montre l'extrait suivant :
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 0 233276 146636 469808 0 0 7 7 14 27 10 3 87 0 0 0 0 233276 146636 469808 0 0 0 0 523 138 3 0 96 0 0 0 0 233276 146636 469808 0 0 0 0 557 385 2 1 97 0 0 0 0 233276 146636 469808 0 0 0 0 544 343 2 0 97 0 0 0 0 233276 146636 469808 0 0 0 0 517 89 2 0 98 0 0 0 0 233276 146636 469808 0 0 0 32 518 102 2 0 98 0 0 0 0 233276 146636 469808 0 0 0 0 516 91 2 1 98 0 0 0 0 233276 146636 469808 0 0 0 0 516 72 2 0 98 0 0 0 0 233276 146636 469808 0 0 0 0 516 88 2 0 97 0 0 0 0 233276 146636 469808 0 0 0 0 516 81 2 0 97 |
Les informations ci-dessus ont été obtenues grâce à la commande vmstat 1 10 qui recueille des échantillons sur le système toutes les secondes, dix fois de suite. Au premier abord, les statistiques relatives au CPU (à savoir les champs us, sy et id) semblent similaires, voire même légèrement moins détaillées, à celles affichées par top. Néanmoins, contrairement à top, il est possible d'obtenir ici un certain nombre d'informations sur la manière dont le CPU est utilisé.
En examinant les champs system, on peut voir que le CPU traite en moyenne environ 500 interruptions par seconde et qu'il alterne entre les processus de 80 à presque 400 fois par seconde. Si vous pensez que ces chiffres représentent une activité intense, détrompez-vous car les opérations de traitement au niveau de l'utilisateur (le champ us) atteignent seulement 2% en moyenne, alors que celles effectuées au niveau du système (le champs sy) sont généralement inférieures à 1%. Dans cet exemple, il s'agit également d'un système inactif.
En examinant les outils offerts par Sysstat, on peut voir que iostat et mpstat n'offrent que peu d'informations supplémentaires par rapport aux sorties obtenues avec top et vmstat. Toutefois, sar créé un certain nombre de rapports pouvant se révéler utiles lors du contrôle de l'utilisation CPU.
Le premier rapport est obtenu grâce à la commande sar -q qui affiche la longueur de la file d'attente des processus exécutables (run), le nombre total des processus et les moyennes de charge enregistrés lors de la dernière minute et au cours des 5 dernières minutes. Ci-après figure un exemple de ce rapport :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 12:10:00 AM 3 122 0.07 0.28 12:20:01 AM 5 123 0.00 0.03 … 09:50:00 AM 5 124 0.67 0.65 Average: 4 123 0.26 0.26 |
Dans cet exemple, le système est certes toujours occupé (puisque plus d'un processus est exécutable à tout moment donné), mais il n'est pas excessivement chargé (car ce système précis est doté de plus d'un processeur).
Le rapport sar ci-dessous qui fournit des informations sur le CPU est produit par la commande sar -u :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM CPU %user %nice %system %idle 12:10:00 AM all 3.69 20.10 1.06 75.15 12:20:01 AM all 1.73 0.22 0.80 97.25 … 10:00:00 AM all 35.17 0.83 1.06 62.93 Average: all 7.47 4.85 3.87 83.81 |
Les statistiques contenues dans ce rapport ne sont pas vraiment différentes de celles fournies par de nombreux autres outils. Toutefois, le gros avantage dans le cas présent est que sar fournit ces données de manière constante et par là même, représente une commande beaucoup plus utile pour obtenir des moyennes à long terme ou pour créer des graphiques sur l'utilisation CPU.
Sur des systèmes à processeurs multiples, la commande sar -U permet de fournir des statistiques pour un processeur particulier ou pour tous les processeurs. Ci-après figure un exemple de sortie renvoyée par sar -U ALL :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM CPU %user %nice %system %idle 12:10:00 AM 0 3.46 21.47 1.09 73.98 12:10:00 AM 1 3.91 18.73 1.03 76.33 12:20:01 AM 0 1.63 0.25 0.78 97.34 12:20:01 AM 1 1.82 0.20 0.81 97.17 … 10:00:00 AM 0 39.12 0.75 1.04 59.09 10:00:00 AM 1 31.22 0.92 1.09 66.77 Average: 0 7.61 4.91 3.86 83.61 Average: 1 7.33 4.78 3.88 84.02 |
La commande sar -w établit un rapport sur le nombre de changements de contextes par seconde et permet par là même, d'obtenir des informations supplémentaires sur les endroits monopolisant les cycles CPU :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM cswch/s 12:10:00 AM 537.97 12:20:01 AM 339.43 … 10:10:00 AM 319.42 Average: 1158.25 |
Il est également possible de créer deux rapports sar différents fournissant des informations sur l'activité d'interruption. Le premier (produit à l'aide de la commande sar -I SUM) affiche une seule statistique sur les "interruptions par seconde" :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM INTR intr/s 12:10:00 AM sum 539.15 12:20:01 AM sum 539.49 … 10:40:01 AM sum 539.10 Average: sum 541.00 |
À l'aide de la commande sar -I PROC, il est possible de ventiler les données relatives à l'activité d'interruption par processeur (sur des systèmes à processeurs multiples) et par niveau d'interruption (de 0 à 15) comme le montre l'extrait ci-dessous :
Linux 2.4.21-1.1931.2.349.2.2.entsmp (pigdog.example.com) 07/21/2003 12:00:00 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s 12:10:01 AM 0 512.01 0.00 0.00 0.00 3.44 0.00 0.00 12:10:01 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s 12:20:01 AM 0 512.00 0.00 0.00 0.00 3.73 0.00 0.00 … 10:30:01 AM CPU i000/s i001/s i002/s i003/s i008/s i009/s i010/s 10:40:02 AM 0 512.00 1.67 0.00 0.00 0.00 15.08 0.00 Average: 0 512.00 0.42 0.00 N/A 0.00 6.03 N/A |
Ce rapport (tronqué afin de tenir sur la page) comprend une colonne par niveau d'interruption (le champ i002/s illustrant le taux pour le niveau 2 d'interruption). Si ce système était doté de processeurs multiples, la sortie comprendrait une ligne par période d'échantillonnage et ce, pour chaque CPU.
Un autre point important à noter concernant ce rapport est que sar ajoute ou retire des champs d'interruption spécifiques, si aucune information n'est recueillie pour le champ en question. Comme le montre l'exemple ci-dessus, la fin du rapport inclut des niveaux d'interruption (à savoir 3 et 10) qui n'apparaissaient pas au début de la période d'échantillonnage.
![]() | Remarque | ||
---|---|---|---|
Il existe deux autres rapports sar fournissant des informations sur les interruptions — sar -I ALL et sar -I XALL. Toutefois, la configuration par défaut de l'utilitaire de recueil de données sadc ne récolte pas les informations nécessaires pour ces rapports. Pour changer la situation, il suffit de modifier le fichier /etc/cron.d/sysstat en modifiant la ligne suivante :
de sorte à qu'elle ressemble à la ligne ci-dessous :
Notez bien que cette modification donne à sadc l'instruction de recueillir des données supplémentaires et que par conséquent, elle entraîne la création de fichiers de données plus volumineux. Il est donc essentiel de vous assurez que la configuration de votre système peut bien prendre en charge une consommation d'espace supplémentaire. |
Précédent | Sommaire | Suivant |
Puissance de traitement | Niveau supérieur | Ressources supplémentaires |