Performance : Mémoire avec free et vmstat
Table des matières
Quand un système Unix manque de mémoire, cela a des conséquences souvent catastrophiques : l'ensemble du système se met à fonctionner au ralenti jusqu'à la paralysie complète de la machine ! Le manque de mémoire est donc un problème majeur à traiter sans délai. Il faut donc avant tout être capable de repérer ce phénomène.
Pour mesurer la consommation de la mémoire, il existe plusieurs commandes, chacune avec sa spécificité. La commande free fournit des informations détaillées sur la façon dont la mémoire est consommée :
La première ligne indique la consommation de la mémoire physique, c'est à dire celle fournie par les barrettes de mémoire :
Dans l'exemple ci-dessus, le système dispose en tout de 7865 Mo de mémoire. Sur ce total, 4992 Mo sont utilisés et 2872 Mo sont inutilisés. A première vue, près de 5Go de mémoire sont utilisés, soit plus de 50%. Pourtant, ça n'est pas du tout le cas. Attention à ne pas confondre mémoire inutilisée et mémoire disponible !
Le système consomme un maximum de mémoire pour optimiser au mieux ses performances via l'utilisation de caches, et il n'y a donc que très peu de mémoire inutilisée (colonne free).
Mais la mémoire utilisée par les caches (colonnes buffers et cached) peut être libérée à tout moment.
La deuxième ligne indique la quantité de mémoire réellement consommée par les applications (colonne used) et la mémoire réellement disponible (colonne free) :
En cessant d'utiliser les caches, le système ne consommerait donc plus que 2375 Mo de mémoire alors que 5489 Mo seraient disponibles. Finalement, ce serveur a encore beaucoup de mémoire disponible en réserve !
La dernière ligne indique la consommation de mémoire swap :
Le swap est une partition particulière du disque dur utilisée par le noyau pour étendre la mémoire physique. Ce besoin découle de la différence entre le prix de la mémoire qui est beaucoup plus cher que celui des disques. Pourquoi dans ce cas ne pas se servir du disque comme si c'était de la mémoire physique ? C'est exactement le rôle du swap qui permet d'étendre considérablement la mémoire utilisable par le système. En revanche les accès disques étant beaucoup plus lents, cet espace ne sera utilisé qu'en cas d’extrême nécessité, quand la mémoire physique est épuisée.
Quand le système se met à utiliser son swap (on dit alors qu'il "swappe"), les conséquences sur les performances globales du système sont très visibles car celui-ci est alors considérablement ralenti. Le swap doit donc essentiellement être vu comme une mémoire de secours, à utiliser le moins possible. Dans l'exemple ci-dessus, la colonne used avec une valeur de 0 indique que le swap n'est pas utilisé, ce qui est plutôt rassurant pour cette machine.
Notez que certains noyau utilisent une petite portion du swap pour y entreposer de façon temporaire des informations. Cela n'a rien d'alarmant tant que cette consommation est modérée et qu'il reste suffisamment de mémoire physique de libre.
Introduction
Quand un système Unix manque de mémoire, cela a des conséquences souvent catastrophiques : l'ensemble du système se met à fonctionner au ralenti jusqu'à la paralysie complète de la machine ! Le manque de mémoire est donc un problème majeur à traiter sans délai. Il faut donc avant tout être capable de repérer ce phénomène.
La commande free
Pour mesurer la consommation de la mémoire, il existe plusieurs commandes, chacune avec sa spécificité. La commande free fournit des informations détaillées sur la façon dont la mémoire est consommée :
Code BASH :
free -m total used free shared buffers cached Mem: 7865 4992 2872 295 334 2281 -/+ buffers/cache: 2375 5489 Swap: 8188 0 8188
La première ligne indique la consommation de la mémoire physique, c'est à dire celle fournie par les barrettes de mémoire :
Code BASH :
total used free shared buffers cached Mem: 7865 4992 2872 295 334 2281
- total indique la quantité de mémoire physique totale.
- used indique la quantité de mémoire physique consommée par le système dans son ensemble.
- free indique la quantité de mémoire physique inutilisée.
- shared est obsolète et doit être ignoré.
- buffers et cached renseignent sur la mémoire utilisée pour (essentiellement) optimiser les performances du système. Cette mémoire peut être rendue disponible à tout moment.
Dans l'exemple ci-dessus, le système dispose en tout de 7865 Mo de mémoire. Sur ce total, 4992 Mo sont utilisés et 2872 Mo sont inutilisés. A première vue, près de 5Go de mémoire sont utilisés, soit plus de 50%. Pourtant, ça n'est pas du tout le cas. Attention à ne pas confondre mémoire inutilisée et mémoire disponible !
Le système consomme un maximum de mémoire pour optimiser au mieux ses performances via l'utilisation de caches, et il n'y a donc que très peu de mémoire inutilisée (colonne free).
Mais la mémoire utilisée par les caches (colonnes buffers et cached) peut être libérée à tout moment.
La deuxième ligne indique la quantité de mémoire réellement consommée par les applications (colonne used) et la mémoire réellement disponible (colonne free) :
Code BASH :
-/+ buffers/cache: 2375 5489
En cessant d'utiliser les caches, le système ne consommerait donc plus que 2375 Mo de mémoire alors que 5489 Mo seraient disponibles. Finalement, ce serveur a encore beaucoup de mémoire disponible en réserve !
La dernière ligne indique la consommation de mémoire swap :
Code BASH :
Swap: 8188 0 8188
Le swap est une partition particulière du disque dur utilisée par le noyau pour étendre la mémoire physique. Ce besoin découle de la différence entre le prix de la mémoire qui est beaucoup plus cher que celui des disques. Pourquoi dans ce cas ne pas se servir du disque comme si c'était de la mémoire physique ? C'est exactement le rôle du swap qui permet d'étendre considérablement la mémoire utilisable par le système. En revanche les accès disques étant beaucoup plus lents, cet espace ne sera utilisé qu'en cas d’extrême nécessité, quand la mémoire physique est épuisée.
Quand le système se met à utiliser son swap (on dit alors qu'il "swappe"), les conséquences sur les performances globales du système sont très visibles car celui-ci est alors considérablement ralenti. Le swap doit donc essentiellement être vu comme une mémoire de secours, à utiliser le moins possible. Dans l'exemple ci-dessus, la colonne used avec une valeur de 0 indique que le swap n'est pas utilisé, ce qui est plutôt rassurant pour cette machine.
Notez que certains noyau utilisent une petite portion du swap pour y entreposer de façon temporaire des informations. Cela n'a rien d'alarmant tant que cette consommation est modérée et qu'il reste suffisamment de mémoire physique de libre.