Maîtriser la commande free sous Linux

Introduction

Lorsqu’un serveur Ubuntu ou une distribution Linux montre des signes de ralentissement, le premier réflexe de tout administrateur système consiste à évaluer l’empreinte mémoire à l’aide de l’utilitaire free. Ce guide pratique décortique son fonctionnement : du choix des unités d’affichage les plus adaptées à la distinction fondamentale entre available et buff/cache, en passant par la mise en place d’une surveillance continue lors de pics de charge.

1. Première approche et conversion d’unités pour une meilleure lisibilité (-h, -m, -g)

L’utilitaire free offre une vue synthétique des ressources de la machine : il détaille l’allocation globale, la consommation courante ainsi que la marge résiduelle, aussi bien pour la mémoire vive physique (RAM) que pour l’espace d’échange (Swap).
Sans paramètre additionnel, les grandeurs sont restituées par défaut en kibioctets (KiB), une échelle brute souvent peu parlante lors d’un diagnostic d’urgence.
⚙️ [Options fondamentales]

-b : Restitue l’ensemble des grandeurs brutes en octets (Bytes).
-k : Calcule et présente les données en kibioctets (KiB, comportement par défaut).
-m : Normalise la sortie à l’échelle du mébioctet (MiB).
-g : Arrondit et synthétise les métriques en gibioctets (GiB).
--mega : Aligne le calcul sur le système décimal standard (1 MB = 1 000 000 B) au lieu de la base binaire 1024.
--giga : Bascule l’affichage en gigaoctets décimaux (1 GB = 1 000 000 000 B).
-h : Adapte dynamiquement l’échelle (B, Ki, Mi, Gi, Ti) pour une lecture humaine directe et intuitive.
-w : Active le mode étendu (wide) en séparant distinctement la mémoire tampon (buffers) de la mémoire cache.
-c [nombre] : Interrompt automatiquement la commande après avoir rafraîchi l’affichage un nombre déterminé de fois.
-s [secondes] : Définit la fréquence d’actualisation périodique de l’affichage.
-t : Insère une ligne récapitulative cumulant la RAM physique et le Swap.

Aperçu standard de l’exécution de free

L’adjonction du drapeau -h simplifie considérablement l’analyse visuelle grâce à l’ajustement dynamique des préfixes (GiB, MiB, KiB).
Cette représentation human-readable constitue le choix privilégié en exploitation quotidienne, permettant de cerner l’état de saturation d’une machine en un coup d’œil.

Rendu lisible de la mémoire avec free -h

À l’inverse, l’argument -m impose une granularité homogène en mébioctets (MiB).
Cette uniformisation purement numérique se révèle particulièrement précieuse lors de l’intégration dans des scripts shell ou lorsqu’une comparaison arithmétique précise s’avère nécessaire.

Formatage homogène en mébioctets via free -m

2. Déchiffrer les colonnes du noyau : free vs available et isolation de buff/cache

En consultant la sortie fournie par free -h, plusieurs indicateurs se côtoient et peuvent prêter à confusion.
La métrique free correspond strictement à la mémoire vierge de toute donnée, c’est-à-dire non allouée par le noyau.
La colonne available fournit quant à elle une estimation réaliste de la capacité immédiatement mobilisable pour de nouveaux processus : elle comptabilise la mémoire inutilisée tout en intégrant les pages de cache et de tampons susceptibles d’être libérées instantanément.
Par conséquent, pour évaluer sereinement la marge de manœuvre de votre serveur, c’est impérativement le chiffre de available qu’il convient de surveiller, et non celui de free.

Détail des colonnes d’allocation avec free -h

L’introduction de l’option -w décompose l’agrégat buff/cache en deux composantes indépendantes : buffers et cache.
Le compartiment buffers est réservé par le noyau pour stocker temporairement les métadonnées de systèmes de fichiers et orchestrer les opérations d’E/S sur les blocs de disque.
Le segment cache (page cache) conserve en mémoire vive les fichiers récemment consultés afin d’accélérer drastiquement les accès ultérieurs.
Rassurez-vous : en cas de sollicitation accrue par vos applications, le noyau réquisitionne sans délai ces espaces tampons pour les réaffecter aux processus actifs.

Isolation des buffers et du cache avec free -h -w

L’inspection directe des dix premières lignes du fichier /proc/meminfo via head -n 10 /proc/meminfo permet de remonter à la source exacte des métriques du système.
Des grandeurs telles que MemTotal, MemFree, MemAvailable, Buffers ou Cached sont directement collectées depuis cette interface du noyau virtuel pour alimenter l’outil free.
Cette méthode s’avère idéale pour auditer la fiabilité d’un script ou mener une investigation approfondie sur les mécanismes internes de gestion de la mémoire.

Lecture des données brutes dans le pseudofichier /proc/meminfo

3. Supervision continue et agrégation globale des ressources (-s, -c, -t)

En combinant les paramètres via free -h -t, la commande génère une ligne récapitulative Total fusionnant les volumes de la mémoire vive (Mem) et de l’espace de pagination (Swap).
Cet indicateur consolidé permet de jauger la réserve opérationnelle globale du système face à des charges applicatives massives.

Affichage de la ligne Total cumulant RAM et Swap avec free -h -t

La syntaxe free -h -s 2 -c 3 orchestre une scrutation cadencée : le système mesure l’occupation mémoire toutes les deux secondes (-s 2) sur un cycle de trois itérations successives (-c 3).
Cette approche s’avère particulièrement efficace pour suivre les variations d’allocation mémoire lors de l’exécution d’un traitement lourd ou d’une montée en charge applicative.

Échantillonnage périodique de la mémoire avec free -h -s 2 -c 3

4. Expérimentation concrète : observer la dynamique mémoire sous contrainte

Pour simuler un contexte de forte sollicitation et observer le comportement du noyau en direct, nous installons l’outil de test synthétique stress.

Installation du paquet stress via le gestionnaire apt

Une première exécution de free -h sert de point de référence avant toute perturbation.
Le système affiche ici 5.2GiB en statut used, 1.2GiB de mémoire totalement free, et une réserve opérationnelle available de 2.0GiB, traduisant un environnement équilibré.

Vérification de l’état nominal de la mémoire avant le test de charge

Nous déclenchons ensuite une épreuve contrôlée à l’aide de la commande stress --vm 1 --vm-bytes 256M --timeout 5s, qui mobilise un processus consommateur chargé d’allouer et de libérer 256 Mo de mémoire virtuelle durant une fenêtre de 5 secondes.
Cette injection de charge artificielle permet de vérifier la réactivité du gestionnaire de mémoire.

Génération d’une contrainte synthétique de 256 Mo avec stress

Un nouveau contrôle à l’aide de free -h permet d’objectiver l’impact immédiat de la charge.
On constate une progression de used qui passe de 5.2GiB à 5.3GiB, tandis que free recule à 1.0GiB et que la capacité available s’ajuste à 1.9GiB : ces fluctuations confirment que le noyau a réagi instantanément pour allouer les pages mémoire requises par le processus de test.

Relevé des métriques d’occupation mémoire après sollicitation

Vous disposez désormais de tous les éléments nécessaires pour exploiter pleinement la commande free, interpréter sans ambiguïté les données de cache et anticiper les engorgements mémoire sur vos environnements de production Linux.