Analyse des performances de la mémoire avec la commande vmstat

Logo

Introduction

La commande vmstat permet d’obtenir sur les systèmes Unix les statistiques sur la mémoire virtuelle (Virtual Memory). Dans cette documentation, la commande vmstat est étudiée sous 3 OS :

  • Sun Solaris
  • IBM AIX
  • HP-UX

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

Dans cette documentation, il est question de pages et il est important de savoir dès à présent qu’une page correspond à 4096 bytes.

L’objectif de cette documentation ne consiste pas à traduire les man de la commande vmstat 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 vmstat.

Généralités sur la commande vmstat

Syntaxe

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

Syntaxe Solaris:

vmstat [ -cipsS ] [ PhysicalVolume ] [ Interval [ Count ] ]

Syntaxe IBM AIX

vmstat [ -f ] [ -i ] [ -s ] [ PhysicalVolume ... ] [ Interval [ Count ] ]

Syntaxe HP-UX

vmstat [ -dnS ] [ Interval [ Count ] ]
vmstat -f | -s | -z

Description

La commande vmstat génère des rapports sur les process et la mémoire virtuelle, additionnellement elle peut fournir des informations concernant les disques (spécificité Solaris et IBM AIX) mais la commande iostat est plus pertinente pour l’activité sur les disques. La commande vmstat est très utile pour traquer des problèmes de mémoire sur un système UNIX.

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 vmstat génère des rapports de façon continue.

Exemple de rapport vmstat - Solaris

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

vmstat 5
          procs     memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr f0 s3 s6 --   in   sy   cs us sy id
0 0 0   2444  2040   0  26  1  4  4  0  0  0  3  0  0   31   91   41  1  4 95
0 0 0 135588  2232   0  14  0  0  0  0  0  0  0  0  0   64   27   38  0  0 100
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   70   33   43  0  2 98
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   85  101   68  2  0 98
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   69   33   37  0  6 94
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   68   36   40  0  0 100
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   67   31   36  0  0 100
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   65   43   35  1  1 98
0 0 0 135588  2232   0 102  0  0  0  0  0  0  0  0  0   82  179   65  2  5 93
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0   76   52   42  0  8 92
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0  107  109   68  1  1 98
0 0 0 135588  2232   0   0  0  0  0  0  0  0  0  0  0  109  110   81  1  2 97
0 0 0 135588  2232   0 232  0  0  0  0  0  0  0  0  0   78  340   61  6 10 84
0 0 0 134028  1584   0 524  0  0  0  0  0  0  0  0  0  200  540  164 38 31 31
0 0 0 133884  1356   0  66  0  0  0  0  0  0  1  0  0  201  323  167 15 12 73
0 0 0 133768  1200   0  34  0  0  0  0  0  0  0  0  0  106  179   90 15 18 67
Procs Les trois colonnes en dessous de l’entête procs montrent le nombre de process dans la "run queue" (r), le nombre de process bloqués (b), et le nombre de process courts ou exécutables dans la zone d’échange (swap) (w).
Memory Les deux colonnes sous l’entête memory indiquent la quantité en bytes de swap ou pages virtuelles accédées (swap), et la quantité de mémoire occupée par des pages libres ou inaccédées en Kb (free). Dans cet exemple, il y a environ 128K de swap, et environ 2200 Kb de mémoire libre.
Pages Les sept colonnes en dessous de l’entête Page donnent des informations concernant les pages et le comportement au niveau des pages. Ces informations sont données en unités par seconde.
  • re : Réclamations de pages en mémoire
  • rf : Défauts mineurs ou défauts de translations d’adresse
  • pi : KB pagés incorporés en mémoire
  • po : KB pagés expulsés de la mémoire
  • fr : KB remplacés lors de la stratégie MRU/LRU (remplacement de pages)
  • de : Déficits anticipés de mémoire à court terme (en KB)
  • sr : Pages scannées par l’algorithme régulier (clock) pour la stratégie MRU/LRU
Disk Les quatres colonnes concernant l’entête disk donnent des informations sur l’activité des disques, informations données en opérations par seconde. Il est possible d’indiquer à la commande vmstat quels disques doivent être pris en compte dans le monitoring (paramètre PhysicalVolume). La commande iostat fournit des informations plus précieuses.
Faults Les trois colonnes en dessous de l’entête faults indiquent les taux moyens d’interruption ou de piégeage dans l’intervalle de temps.
  • in : Nombre d’interruptions par seconde sur les devices non prévues.
  • sy : Appels système par seconde
  • cs : Nombre de changements de contexte par seconde, un basculement de contexte se produit lorsqu’UNIX modifie un process en cours d’exécution.
CPU Les trois colonnes sous l’entête CPU montrent l’utilisation de la CPU.
  • us : Temps CPU pour les process normaux et basse priorité (nice)
  • sy : Temps CPU pour les process système
  • id : Temps CPU d’inactivité

La commande iostat donne des informations plus pertinentes sur la ou les CPU(s).

Exemple de rapport vmstat - IBM AIX

L’exemple ci-dessous donne les entêtes fournies avec la commande vmstat sous IBM AIX.

procs    memory             page              faults        cpu
----- ----------- ------------------------ ------------ -----------
r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
Procs Les deux colonnes en dessous de l’entête procs montrent le nombre de process dans la "run queue/" (r) et le nombre de process bloqués (b).
Memory Les deux colonnes sous l’entête memory indiquent la quantité en bytes de pages virtuelles actives (avm), les pages étant considérées comme actives lorsqu’elles sont accédées, et la quantité de mémoire occupée par des pages libres ou inaccédées en Kb (free).
Pages Les six colonnes en dessous de l’entête Page donnent des informations concernant les pages et le comportement au niveau des pages. Ces informations sont données en unités par seconde.
  • re : Réclamations de pages en mémoire
  • pi : Nombre de pages incorporées en mémoire
  • po : Nombre de pages expulsées de la mémoire
  • fr : Pages remplacées par seconde lors de la stratégie MRU/LRU (remplacement de pages)
  • sr : Pages scannées par l’algorithme régulier (clock) pour la stratégie MRU/LRU
  • cy : Nombre de cycles de l’algorithme régulier (clock) pour la stratégie MRU/LRU
Faults Les trois colonnes en dessous de l’entête faults indiquent les taux moyens d’interruption ou de piégeage dans l’intervalle de temps.
  • in : Nombre d’interruptions par seconde sur les devices non prévues.
  • sy : Appels système par seconde
  • cs : Nombre de changements de contexte par seconde, un basculement de contexte se produit lorsqu’UNIX modifie un process en cours d’exécution.
CPU Les quatre colonnes sous l’entête CPU montrent l’utilisation de la CPU.
  • us : Temps CPU pour les process normaux et basse priorité (nice)
  • sy : Temps CPU pour les process système
  • id : Temps CPU d’inactivité
  • wa : Temps CPU d’inactivité alors que le système comporte une requête I/O

La commande iostat indique des informations plus pertinentes sur la ou les CPU(s).

Exemple de rapport vmstat - HP-UX

L’exemple ci-dessous donne les entêtes fournies avec la commande vmstat sous HP-UX.

procs         memory                  page                 faults       cpu
r   b   w    avm  free    re  at  pi  po  fr  de  sr     in  sy  cs   us sy id
0   0   0    1158  511    0    0   0   0   0   0   0     111 18   7    0   0 100
Procs Les trois colonnes en dessous de l’entête procs montrent le nombre de process dans la "run queue" (r), le nombre de process bloqués (b), et le nombre de process courts ou exécutables dans la zone d’échange (swap) (w).
Memory Les deux colonnes sous l’entête memory indiquent la quantité en bytes de pages virtuelles actives (avm), les pages étant considérées comme actives lorsqu’elles sont accédées, et la quantité de mémoire occupée par des pages libres ou inaccédées en Kb (free).
Page Les sept colonnes en dessous de l’entête Page donnent des informations concernant les pages et le comportement au niveau des pages. Ces informations sont données en unités par seconde.
  • re : Réclamations de pages en mémoire
  • at : Défauts mineurs ou défauts de translation d’adresse
  • pi : Nombre de pages incorporées en mémoire
  • po : Nombre de pages expulsées de la mémoire
  • fr : Pages remplacées par seocnde lors de la stratégie MRU/LRU (remplacement de pages)
  • de : Déficits anticipés de mémoire à court terme (en KB)
  • sr : Pages scannées par l’algorithme régulier (clock) pour la stratégie MRU/LRU
Faults Les trois colonnes en dessous de l’entête faults indiquent les taux moyens d’interruption ou de piégeage dans l’intervalle de temps.
  • in : Nombre d’interruptions par seconde sur les devices non prévues.
  • sy : Appels système par seconde
  • cs : Nombre de changements de contexte par seconde, un basculement de contexte se produit lorsqu’UNIX modifie un process en cours d’exécution.
CPU Les trois colonnes sous l’entête CPU montrent l’utilisation de la CPU.
  • us : Temps CPU pour les process normaux et basse priorité (nice)
  • sy : Temps CPU pour les process système
  • id : Temps CPU d’inactivité

La commande iostat donne des informations plus pertinentes sur la ou les CPU(s).

Il est possible d’obtenir sous HP-UX des informations sur les transferts E/S sur les disques avec la commande vmstat (vmstat -d) mais la commande iostat est bien plus adaptée.