Sous Linux la mémoire vive presque entièrement occupée suscite souvent une inquiétude disproportionnée. Beaucoup y voient un signe de saturation ou de dysfonctionnement et cherchent aussitôt à la libérer. Cette réaction repose pourtant sur une lecture erronée du fonctionnement du système. Une RAM utilisée est exploitée de manière intentionnelle par le noyau pour améliorer les performances globales. Avant de vouloir intervenir il est indispensable de comprendre ce que Linux fait réellement de cette mémoire et dans quelles situations une action peut avoir du sens.
Comment libérer la mémoire vive (RAM) non utilisée sur linux et les erreurs à éviter
- 1. Vérifier comment Linux utilise la RAM
- 2. Apparition du swap disque et ralentissement
- 3. La pression mémoire et ce que le système cherche à éviter
- zRam: compresser la mémoire plutot que de swapper vers le disque dur
- Déconseillé : debug sur la mémoire cache du noyau
- Ce que Linux fait déjà mieux que vous
1. Vérifier comment Linux utilise la RAM
Lorsqu’un utilisateur consulte l’état de la mémoire sous Linux il est fréquent qu’il se focalise sur la quantité de RAM dite utilisée. Cette lecture est trompeuse si elle n’est pas replacée dans son contexte. La mémoire réellement utilisée par les applications correspond aux données actives nécessaires à leur fonctionnement immédiat comme le code en cours d’exécution les piles et les zones de travail. À côté de cette mémoire active le système maintient en RAM un ensemble de données issues du stockage que l’on appelle le cache disque ou page cache. Ce cache contient des fichiers récemment lus des bibliothèques partagées et même des exécutables afin d’éviter des accès disque répétés.
La mémoire libre quant à elle représente la portion de RAM qui n’est actuellement ni utilisée par des processus ni occupée par le cache. Sous Linux cette zone est volontairement réduite car une mémoire totalement libre n’apporte aucun bénéfice en termes de performances. C’est précisément pour cette raison que la colonne dite disponible est la seule réellement pertinente. Elle indique la quantité de mémoire que le système est capable de fournir immédiatement à de nouvelles applications sans provoquer de pression mémoire ni de recours excessif au swap. Elle prend en compte le fait que le cache disque peut être libéré à la demande ce que la simple notion de mémoire libre ne reflète pas.
Pour vérifier les différentes quantités de RAM utilisées sous Linux, vous pouvez utiliser cette commande :
free -h
Ce qu’il faut regarder :
- available : c’est la mémoire réellement utilisable immédiatement par une application.
- buff/cache : cache disque récupérable automatiquement, la mémoire est utilisée pour accélérer le système, mais dès qu’une application en a besoin, elle est libérée.
Dans cet exemple, le système dispose d’environ 2 Go de RAM. Sur cette quantité, 1,2 Go sont indiqués comme utilisés.
La colonne libre (ici à 94 Mo) représente la mémoire totalement inutilisée à l’instant précis. Sous Linux, cette valeur est généralement faible et ce n’est pas un problème. Une RAM totalement libre n’apporte aucun gain de performance et Linux prefère l’utiliser pour éviter les accès plus lent et répétitifs au disque dur.

Par exemple, lorsqu’un programme écrit des données sur le disque dur sous Linux, celles-ci ne sont généralement pas écrites immédiatement sur le support de stockage. Le noyau place d’abord ces données dans le cache d’écriture en mémoire vive. L’appel d’écriture retourne alors rapidement la main à l’application, ce qui améliore la réactivité. L’écriture physique sur le disque est ensuite effectuée plus tard (~5 à 30 secondes par défaut) de manière regroupée et optimisée.
La colonne tampon/cache (qui affiche ici 852 Mo) correspond principalement au page cache. Ce sont des données mises en mémoire afin d’accélérer les accès disque comme des fichiers, des bibliothèques ou des exécutables récemment utilisés. Cette mémoire n’est pas perdue et peut être libérée immédiatement si une application en a besoin.
2. Apparition du swap disque et ralentissement
Quelques instants plus tard, après l’ouverture de toutes les applications que j’ai pu trouver, la situation évolue nettement. La mémoire utilisée augmente, le cache page diminue fortement et la mémoire disponible chute à environ 440 Mo. Dans le même temps, le swap commence à être réellement utilisé avec 1 Go déplacé sur le disque. Ce basculement est un signal clair que le système entre dans une zone de pression mémoire.

Ce comportement illustre parfaitement la logique du noyau Linux. Avant d’utiliser le swap, le système tente d’exploiter la RAM au maximum et lorsque cette marge ne suffit plus, certaines pages peu actives sont déplacées vers l’espace d’échange afin de préserver la stabilité et la réactivité globale.
Il est important de noter que le système ne montre aucun signe de saturation critique mais un ralentissement sevère.
3. La pression mémoire et ce que le système cherche à éviter
Lorsque la mémoire vive commence réellement à manquer, le noyau mesure en permanence ce que l’on appelle la pression mémoire, c’est-à-dire la difficulté croissante à fournir de la RAM aux applications sans dégrader le fonctionnement du système. Tant que cette pression reste faible, le noyau se contente de libérer automatiquement le cache disque afin de répondre aux nouvelles demandes.
Lorsque la pression augmente, le système active alors des mécanismes de compensation. Le premier consiste à déplacer certaines pages mémoire peu utilisées vers le swap, c’est-à-dire un espace d’échange situé sur le disque dur. Cette opération permet de libérer de la RAM, mais elle a un coût important en performances car l’accès au disque est bien plus lent que l’accès à la mémoire vive. Le swap n’est donc pas une optimisation, mais une solution de secours destinée à éviter un freeze du système.
Si la pression mémoire devient trop forte et que ni la libération du cache ni le swap ne suffisent, le noyau peut déclencher l’OOM killer (pour Out Of Memory Killer). Ce mécanisme intervient en dernier recours et consiste à arrêter brutalement un ou plusieurs processus afin de préserver la stabilité globale du système. L’objectif n’est pas d’optimiser, mais d’éviter un gel complet de la machine.
C’est précisément cette situation que l’on cherche à éviter en comprenant correctement l’utilisation de la RAM. Forcer la libération du cache lorsque la mémoire n’est pas réellement saturée force le disque dur à être utilisé. En supprimant des données utiles, le système devra les recharger depuis le disque.
zRam: compresser la mémoire plutot que de swapper vers le disque dur
Lorsque la quantité de mémoire vive est réellement limitée sur des machines disposant de peu de RAM, Zram crée un dispositif de swap dans la RAM elle-même et les pages mémoire qui y sont stockées sont compressées à la volée. Cela signifie que vous pouvez y stocker plus de données qu’il n’y a de RAM physique utilisée grâce à la compression, on s’attend classiquement à un ratio de compression d’environ 2:1 (2 Go de RAM logique contenus dans 1 Go de RAM physique) à 3:1, voir plus dans certains cas.
sudo apt install zram-tools -y
Si vous disposez d’un CPU correct mais de peu de mémoire vive, c’est la contrainte idéale.
La compression et la décompression consomment du temps processeur, mais celui-ci est généralement bien inférieur au coût d’un accès disque sur des systèmes équipés de disques lents ou soumis à une forte activité. zram ne remplace pas la mémoire vive, mais il permet d’en étendre efficacement la capacité apparente lorsque la pression mémoire devient réelle.

zram est particulièrement adapté aux environnements contraints comme les ordinateurs anciens, les machines virtuelles légères ou les systèmes embarqués. Il ne s’agit pas d’une optimisation miracle, mais d’un mécanisme pour retarder l’utilisation du swap disque, limiter les ralentissements et éviter des situations critiques lorsque la RAM vient réellement à manquer.
Déconseillé : debug sur la mémoire cache du noyau
Les commandes de libération manuelle du cache mémoire sont parfois présentées comme des solutions d’optimisation. En réalité, elles ne doivent être envisagées que comme un outil d’expérimentation ou de diagnostic. Ces commandes ne libèrent pas la mémoire réellement utilisée par les applications. Elles suppriment uniquement des caches que le noyau avait construits pour accélérer le fonctionnement du système.
Ces commandes sont déconseillés, n’améliorent pas les performances et ne libèrent pas la mémoire des applications. Elles détruisent uniquement des caches que le noyau avait calculés pour accélérer le système et provoque une augmentation des accès disque et de la charge CPU.
sync && echo 1 | sudo tee /proc/sys/vm/drop_caches
Cette commande supprime uniquement le cache des fichiers récemment utilisés.
sync && echo 2 | sudo tee /proc/sys/vm/drop_caches
Cette variante cible les métadonnées du système de fichiers comme les dentries et les inodes. Elle peut entraîner une légère perte de réactivité lors des accès disque suivants.
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
Cette dernière commande combine les deux approches et supprime l’ensemble des caches récupérables. C’est la méthode la plus intrusive et celle qui a le plus d’impact immédiat sur les performances.
La documentation officielle du noyau Linux déconseille leur usage en dehors d’un environnement de test ou de débogage. Dans un usage normal, le noyau libère automatiquement ces caches dès que la mémoire est réellement nécessaire.
Dans cet exemple, la libération manuelle du cache entraîne bien un gain mesurable de mémoire immédiatement disponible. Après l’exécution de la commande, environ 90Mo de RAM redeviennent exploitables. Le gain est réel, mais il reste limité et doit être remis dans son contexte.
Cette mémoire libérée ne provient pas d’une baisse de la consommation des applications en cours d’exécution. Elle correspond à la suppression de caches que le noyau Linux avait constitués pour accélérer le fonctionnement du système. Ces caches contenaient des fichiers, des bibliothèques et des informations déjà calculées, destinées à réduire les accès disque et à améliorer la réactivité globale.

En conséquence, l’ouverture des logiciels devient temporairement plus lente. Les données qui étaient auparavant disponibles en mémoire doivent à nouveau être lues depuis le disque, ce qui introduit une latence supplémentaire. Une fois ces fichiers chargés, le noyau reconstruit progressivement les caches nécessaires afin de rétablir un fonctionnement optimal.
La mémoire vive est alors de nouveau utilisée pour stocker ces informations et les optimisations supprimées lors de la libération manuelle sont recréées au fil des ouvertures de logiciels et des accès aux fichiers. Si cette opération est répétée régulièrement, la mémoire vive finit par être utilisée de manière inefficace. La RAM n’est alors plus exploitée comme un levier de performance, mais comme une simple réserve temporaire vidée et remplie en permanence.
Ce que Linux fait déjà mieux que vous
La gestion de la mémoire sous Linux repose sur des mécanismes intégrés au cœur du noyau, capables d’observer en permanence l’activité du système. Le cache mémoire est maintenu automatiquement afin d’accélérer les accès disque, puis libéré progressivement dès qu’une application en a besoin. Cette gestion est dynamique et contextuelle, basée sur l’usage réel de la machine, et non sur une règle fixe ou arbitraire.
L’arbitrage entre la RAM et le swap suit la même logique adaptative. Le noyau identifie les pages réellement actives et celles qui peuvent être déplacées temporairement sur le disque sans impact immédiat. Cette décision tient compte de la charge, de la pression mémoire et du comportement des processus, ce qui permet de préserver la stabilité tout en limitant les ralentissements perceptibles.
À l’inverse, un script manuel de nettoyage agit sans connaissance de cet état global. Il supprime indistinctement des données que le système avait jugées utiles, obligeant ensuite le noyau à les reconstruire. Dans la majorité des cas, cela entraîne plus d’entrées sorties disque et une charge supplémentaire inutile. Le noyau Linux est plus efficace précisément parce qu’il ajuste la gestion de la mémoire en continu, là où une intervention manuelle reste aveugle et ponctuelle.
Sources et ressources
- Wikipédia - Page cache

