Aller à la recherche

FreeBSD et vmstat : identifier les goulots d’étranglement

vmstat est un outil très pratique pour identifier les goulots d’étranglement. Nous allons voir ici son utilisation au quotidien pour identifier rapidement les causes possible de ralentissement.

vmstat sous FreeBSD analyser les ressources système.

Lançons la commande et voyons ce que nous dit vmstat. vmstat

procs  memory       page                    disks     faults         cpu
r b w  avm   fre   flt  re  pi  po    fr   sr ad0 ad1   in    sy    cs us sy id
0 0 0 633M  407M    40   0   0   0    50    2   0   0    4    96    61  2  1 97

vmstat affiches les informations sous 6 colonnes

  • procs : les processus
  • memory : la mémoire
  • page : la pagination
  • disks : les disques
  • fauls : les erreurs
  • cpu : le processeur

Les processus sous vmstat

l’information sur les processus est divisée en trois colonnes

  • r : le nombre de processus en attente d’être exécuté
  • b : le nombre de processus en attente de i/o (disque, mémoire, etc.)
  • w : le nombre de processus capable d’être exécuté mais mis en swap

Nous pouvons déjà juste avec ces 3 colonnes déterminer plusieurs causes de goulot d’étranglement. Un nombre élevé dans la colonne r, nous informe que le processeur n’est pas assez rapide pour exécuter toutes les demandes qui lui arrivent. Un nombre élevé dans la colonne b, nous indique le nombre de processus en attente d’entrées / sorties pour pouvoir continuer les tâches. Il s’agit là très souvent de i/o sur disque. Avec un nombre élevé cette fois dans la colonne w, nous pouvons déduire qu’il s’agit d’un problème de quantité de mémoire.

La mémoire grâce à vmstat

Rappel : Sous FreeBSD la mémoire est organisée en bloc de même taille nommées pages.

L’information memory est divisée en 2 colonnes

  • avm : Nombre de pages active dans la mémoire virtuelle.
  • free : Nombre de pages de mémoire libre

Nous pouvons ici déterminer que si notre colonne avm à des valeurs très hautes ou en augmentation constante c’est que nous manquons de mémoire vive, et que le système utilise (beaucoup trop) la mémoire swap.

La pagination

Ici vmstat nous donne sous 6 colonnes les informations concernant l’utilisation du système de pagination mémoire (les valeurs sont une moyenne sur 5 secondes) :

  • flt : Nombre d’erreurs de pagination
  • re : Nombre de pages reprises depuis le cache
  • pi : Nombre de pages déplacées depuis la mémoire physique vers le swap
  • po : Nombre de pages déplacées depuis le swap vers la mémoire physique
  • fr : Nombre de pages libérées
  • sr : Nombre de pages lues

Ici nous pouvons voir que si la valeur de pi est trop élevé, nous manquons sûrement de mémoire physique. Pour des valeurs hautes de ft ou flt indique de très nombreux processus qui se terminent très rapidement.

Les disques

vmstat va indiquer (pour les 2 premiers disques), le nombre d’opération I/O effectué sur celui-ci par secondes. Un nombre élevé indique une trop forte utilisation de ceux-ci. Pour alléger la charge par disque nous pouvons ajouter des disques, faire les écritures en une seule fois au lieu d’écrire à chaque fois. Si vous avez plus de 2 disques vous devez l’indiquer avec l’option -n (jusqu’à 80).

Les erreurs

Ici vmstat vous informe des traps/interruptions reçues lors des 5 dernières secondes, nous y retrouvons 3 colonnes

  • in : requête IRQ reçue par le système
  • sy : le nombre d’appels systèmes
  • cs : Nombre de basculement de contexte dans les 5 dernières secondes.

En utilisant la colonne faults, il est assez difficile de déterminer une cause de ralentissement sauf si vous avez des nombres vraiment très élevés.

Le processeur

vmstat indique grâce à la section cpu le temps qu’a passé le système pour

  • us : les tâches de l’utilisateur,
  • sy : les tâches système,
  • idle : se reposer ….

Avoir l’information en continue

vmstat permet de connaître l’état du système en continue, pour ce faire nous allons ajouter l’option -w suivi du temps en secondes entre chaque actualisation, interrompez avec CTRL+C. vmstat -w 3

 b w  avm   fre   flt  re  pi  po    fr   sr ad0 ad1   in    sy    cs us sy id
1 0 0 633M  407M    39   0   0   0    50    2   0   0    4    95    61  2  1 97
0 0 0 633M  407M     0   0   0   0     0    0   0   0    1    61    45  0  5 95
0 0 0 633M  407M     0   0   0   0     0    1   0   0    1    62    49  0  1 99
0 0 0 633M  407M     0   0   0   0     0    0   0   0    2    72    56  0  1 99

Ici notre serveur est au repos !!

Voilà, pour une première gestion des informations fournies par FreeBSD

La discussion continue ailleurs

URL de rétrolien : https://www.binsp.net/?trackback/40

Fil des commentaires de ce billet

Page top