Analyse des statistiques CPU et E/S avec la commande iostat

Logo

Introduction

La commande iostat permet très généralement d’obtenir sur les systèmes Unix les statistiques sur la CPU et les E/S. Dans cette documentation, la commande iostat est étudiée sous 3 OS :

  • Sun Solaris
  • IBM AIX
  • HP-UX

Les rapports générés par la commande iostat varient très fortement selon l’OS et quelques exemples accompagnés d’une description sont donnés dans ce document.

L’objectif de cette documentation ne consiste pas à traduire les man de la commande iostat sous les OS Solaris, IBM AIX, et HP-UX mais plutôt à travers des exemples concrets d’être capable de déchiffrer les résultats renvoyés par la commande iostat.

Généralités sur la commande iostat

Syntaxe

La syntaxe de la commande iostat varie fortement en fonction de l’OS (Solaris, AIX ou HP-UX).

Syntaxe Solaris :

iostat [ -cdDeEIMnpPtx ] [ -l n ] [PhysicalVolume ...  ]
          [ Interval [Count] ]

Syntaxe IBM AIX :

iostat [ -d ] [ -t ] [ PhysicalVolume ...] [ Interval [Count] ]

Syntaxe HP-UX :

iostat [-t] [ Interval [Count] ]

Description

La commande iostat génère des rapports qui s’avèrent très pertinents pour décider de changer la configuration du système afin d’améliorer les E/S.

Le premier rapport généré par la commande iostat fournit les statistiques E/S depuis le démarrage du système. Chaque rapport suivant affiche les statistiques E/S pendant la période écoulée depuis le rapport précédent.

Sur les systèmes multiprocesseurs, les statistiques sur la CPU sont calculées sous la forme de moyennes sur les processeurs.

Paramètre PhysicalVolume (Solaris et IBM AIX)

Si le paramètre PhysicalVolume (cf syntaxe) est spécifié, seules les statistiques pour les disques souhaités sont affichées.

Si le paramère PhysicalVolume (cf syntaxe) est spécifié, un ou plusieurs volumes physiques (alphabétiques ou alphanumériques) peuvent être demandés explicitement dans le rapport. Le premier caractère du paramètre PhysicalVolume ne peut être numérique. Lorsqu’un nom de lecteur logique n’est pas trouvé, le message Drive Not Found est affiché dans le rapport. Si aucun nom de lecteurs logiques n’est spécifié, les statistiques sur tous les disques configurés et les CD-ROMs sont affichées.

Paramètres Interval et Count (Solaris, IBM AIX et HP-UX)

Le paramètre Interval permet de spécifier le temps en secondes entre chaque rapport. Le paramètre Count peut être combiné avec le paramètre Interval, ce dernier paramètre permet de spécifier le nombre de rapports à générer. Si le paramètre Interval est spécifié sans le paramètre Count, la commande iostat génère des rapports de façon continue.

La commande iostat est très utile pour traquer un goulet d’étranglement sur un volume physique.

Spécifités de la commande iostat sous Solaris

La commande iostat dispose d’un nombre important de paramètres sous Solaris par rapport aux OS AIX et HP-UX.

iostat [ -cdDeEIMnpPtx ] [ -l n ] [PhysicalVolume ...  ]
                                         [ Interval [Count] ]

Sans option, iostat sous Solaris affiche les statistiques des E/S disques, de(s) CPU(s) et des terminaux (tty), en réalité :

iostat <=> iostat -tdc

Pour plus d’informations sur les autres options, se reporter au man de la commande iostat.

Spécifités de la commande iostat sous IBM AIX

iostat [ -d ] [ -t ] [ PhysicalVolume ...] [
                Interval [Count] ]

Les options -d et -t sont exclusifs sous AIX, il est impossible de combiner ces deux options. Sans une de ces options, toutes le statistiques sont affichées : disques, CPU et terminaux (tty).

L’option -d affiche uniquement les statistiques E/S sur les disques.

L’option -t affiche uniquement les statistiques CPU et terminaux (tty).

Spécifités de la commande iostat sous HP-UX

iostat [-t] [ Interval [Count] ]

Sans option, iostat sous HP-UX n’affiche que les statistiques E/S sur les disques.

L’option -t permet d’ajouter à l’affichage les statistiques sur la CPU et les terminaux (tty).

Exemples de rapports iostat - Solaris

Exemple Solaris n°1

L’exemple ci-dessous a été obtenu avec la commande iostat 2

iostat 2
                   sd4           sd5           sd8           sd9          sd10
rps wps util  rps wps util  rps wps util  rps wps util  rps wps util
  0   0  1.1    0   0  1.1    0   0  1.0    0   0  1.2    0   2  3.5
  8   0 23.2   10   0 23.3    7   0 17.8    7   0 17.2    0  17 21.1
  5   0 14.6    5   0 13.7    9   0 20.8    9   0 23.6    0  17 22.4
  7   0 17.7    7   0 18.6    8   0 18.8    7   0 20.0    0  18 21.9
  7   0 18.3    7   0 17.7    7   0 16.5    7   0 18.7    0  18 23.8
  8   0 21.3    7   0 16.8    6   0 14.0    6   0 17.2    0  17 20.7
  5   5 26.6    4   7 26.2    5   6 27.1    4   6 25.5    0  12 16.3
  5  22 69.5    5  17 52.0    3  18 51.8    6  19 66.5    0  13 19.0
  6   0 14.7    7   0 18.7    8   0 19.4    5   0 13.8    0  17 22.4
  5   0 14.8    6   0 15.9    6   0 15.3    8   0 20.8    0  18 41.5
  3  18 57.6    5  16 49.6    4  15 46.6    5  16 56.6    0  12 17.4
  5   9 38.3    6   9 35.1    6   9 37.7    5  10 40.6    0  15 19.8
  8   0 21.3    5   0 12.9    7   0 17.2    7   0 19.7    0  17 23.0
  6   7 35.8    6   9 34.9    4   8 29.7    6   7 32.2    0  14 21.3
  5  13 46.7    4  12 39.5    6  12 41.3    5  15 55.1    0  15 19.8

Statistiques disques

  • rps : lectures par seconde
  • wps : écritures par seconde
  • util : pourcentage d’utilisation des disques

Dans cet exemple, les accès aux disques sont répartis sur les 4 disques. Une très haute valeur (> 80%) du pourcentage d’utilisation d’un disque permet de suggérer l’ajout de disques. Beaucoup d’intervalles présentent une valeur 0 pour le nombre d’écritures suivis d’intervalles où les écritures sont réalisées. L’ajout de l’option -c permettrait d’inclure les statistiques sur la CPU.

Exemple Solaris n°2

L’exemple ci-dessous a été obtenu avec la commande iostat -xtc 5

iostat -xtc 5
                             extended disk statistics                  tty       cpu
disk      r/s  w/s   Kr/s   Kw/s wait actv  svc_t  %w  %b  tin tout us sy wt id
fd0       0.0  0.0    0.0    0.0  0.0  0.0    0.0   0   0    0   72  0  1  0 99
sd3       0.0  0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd6       0.0  0.0    0.0    0.0  0.0  0.0    0.0   0   0
                   extended disk statistics                  tty       cpu
disk      r/s  w/s   Kr/s   Kw/s wait actv  svc_t  %w  %b  tin tout us sy wt id
fd0       0.0  0.0    0.0    0.0  0.0  0.0    0.0   0   0    0   73  0  2  0 98
sd3       0.0  0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd6       0.0  0.0    0.0    0.0  0.0  0.0    0.0   0   0
Statistiques disques
  • r/s : lectures par seconde
  • w/s : écritures par seconde
  • Kr/s : nombre de KB lus par seconde
  • Kw/s : nombre de KB écrits par seconde
  • wait : moyenne du nombre de transactions en attente (aka queue length)
  • actv : moyenne du nombre de transactions étant activement servies (supprimées de la queue mais non terminées)
  • svc_t : moyenne du temps de service en millisecondes
  • %w : pourcentage du temps durant lequel des transactions sont en attente du service (queue non vide)
  • %b : pourcentage du temps durant lequel le disque est occupé (transactions en progression)
Statistiques tty
  • tin : nombre de caractères lus à partir des terminaux
  • tout : nombre de caractères écrits vers les terminaux
Statistiques CPU
  • us : pourcentage du temps d’utilisation de la CPU par des process utilisateurs (applications)
  • sy : pourcentage du temps d’utilisation de la CPU par le système (mode système)
  • wt : pourcentage du temps où la ou les CPU sont inactives (état idle) et le système a au moins une requête E/S disques
  • id : pourcentage du temps où la ou les CPU sont inactives (état idle) et le système n’a pas de requête E/S disques.

Exemple de rapport iostat - IBM AIX

L’exemple ci-dessous a été obtenu avec la commande iostat 5

iostat 5
tty:      tin         tout      cpu:   % user    % sys     % idle    % iowait
         0.3         26.9               9.6      3.4       85.6       1.4
Disks:        % tm_act     Kbps      tps    msps   Kb_read   Kb_wrtn
hdisk0           0.2       0.9       0.1             42253    459672
hdisk1           2.4       2.9       1.3             81008   1610432
cd0              0.0       0.0       0.0                 0         0
tty:      tin         tout      cpu:   % user    % sys     % idle    % iowait
         0.0         88.6               0.0      1.4       81.4      17.2
Disks:        % tm_act     Kbps      tps    msps   Kb_read   Kb_wrtn
hdisk0           5.0      12.0       2.6                 0        60
hdisk1          15.6      92.6       9.4                 0       464
cd0              0.0       0.0       0.0                 0         0

Avec IBM AIX, utiliser l’option -t pour afficher uniquement les statistiques sur les terminaux (tty) et utiliser l’option -d pour afficher uniquement les statistiques E/S sur les disques.

Statistiques tty
  • tin : nombre de caractères lus à partir des terminaux
  • tout : nombre de caractères écrits vers les terminaux
Statistiques CPU
  • user : pourcentage du temps d’utilisation de la CPU par des process utilisateurs (applications)
  • sys : pourcentage du temps d’utilisation de la CPU par le système (mode système)
  • idle : pourcentage du temps où la ou les CPU sont inactives (état idle) et le système n’a pas de requêtes E/S disques
  • iowait : pourcentage du temps où la ou les CPU sont inactives (état idle) et le système a au moins une requête E/S disques. Cette valeur est grandement augmentée si plusieurs CPU sont inactives en même temps, ce qui est un phénomène inhabituel
Statistiques disques
  • tm_act : pourcentage du temps pendant lequel le disque est occupé
  • kbps : nombre de KB transférés à partir du disque / vers le disque
  • tps : nombre de transferts par seconde sur le disque
  • msps : moyenne du temps de recherche (si les disques supportent ce compteur)
  • kb_read : nombre de KB lus sur le disque
  • kb_wrtn : nombre de KB écrits sur le disque

Exemples de rapports iostats - HP-UX

Exemple HP-UX n°1

L’exemple ci-dessous a été obtenu avec la commande iostat 5

iostat 5
/dev/*dsk/c2010d*s* /dev/*dsk/c2011d*s* /dev/*dsk/c2012d*s* /dev/*dsk/c2015d*s*
bps  sps  msps      bps  sps  msps      bps  sps  msps      bps  sps  msps
 2  0.3   0.0        0  0.0   0.0        0  0.0   0.0        3  0.2   0.0
 0  0.0   0.0        0  0.0   0.0        0  0.0   0.0        5  0.8   0.0

Les statistiques sont affichés pour tous les disques. A titre de rappel, il n’est pas possible de spécifier un jeu de disques sous HP-UX.

Pour chaque disque, iostat affiche sous HP-UX les KB transférés par seconde (bps), le nombre de recherches par seconde (sps) et la moyenne du temps de recherche.

Exemple HP-UX n°2

L’option -t engendre l’affichage dans la sortie des statistiques sur les terminaux (tty) et les CPU :

iostat -t 10
                   tty               cpu
                tin tout        us  ni  sy  id
                  0    6         3   0   1  96
/dev/*dsk/c2010d*s* /dev/*dsk/c2011d*s* /dev/*dsk/c2012d*s* /dev/*dsk/c2015d*s*
bps  sps  msps      bps  sps  msps      bps  sps  msps      bps  sps  msps
 2  0.3   0.0        0  0.0   0.0        0  0.0   0.0        3  0.2   0.0
                  tty                cpu
                tin tout        us  ni  sy  id
                  0   29         0   0   0 100
/dev/*dsk/c2010d*s* /dev/*dsk/c2011d*s* /dev/*dsk/c2012d*s* /dev/*dsk/c2015d*s*
bps  sps  msps      bps  sps  msps      bps  sps  msps      bps  sps  msps
 0  0.0   0.0        0  0.0   0.0        0  0.0   0.0        0  0.0   0.0
Statistiques tty
  • tin : nombre de caractères lus à partir des terminaux
  • tout : nombre de caractères écrits vers les terminaux
Statistiques CPU
  • us : pourcentage du temps d’utilisation de la CPU par des process utilisateurs (applications)
  • ni : pourcentage du temps d’utilisation de la CPU par des process utilisateurs avec une priorité basse (nice)
  • sy : pourcentage du temps d’utilisation de la CPU par le système (mode système)
  • id : pourcentage du temps où la ou les CPU sont inactives (état idle) et le système n’a pas de requêtes E/S sur disques.