Comment vider le cache de la mémoire RAM, la mémoire tampon et l’échange sur Linux
Comme tout autre système d’exploitation, GNU/Linux a mis en œuvre la gestion de la mémoire efficacement et même plus que cela. Cependant, si un processus consomme votre mémoire et que vous souhaitez l’effacer, Linux fournit un moyen de vider ou d’effacer le cache de la RAM.
Dans cet article, nous allons explorer comment vider la mémoire RAM, le cache, la mémoire tampon et l’espace d’échange sur un système Linux pour améliorer les performances globales.
Comprendre la mémoire RAM, le cache, la mémoire tampon et l’espace d’échange
Explorons la mémoire RAM, le cache, la mémoire tampon et l’espace d’échange sur un système Linux.
Cache de la mémoire RAM
Le cache de la mémoire RAM est un mécanisme utilisé par le noyau pour conserver les données régulièrement consultées. Bien que cela améliore la réactivité du système, un cache surchargé peut entraîner la conservation de données obsolètes, ce qui affecte les performances.
Tampon
Comme le cache, la mémoire tampon conserve les données temporairement, mais son objectif diffère. Les tampons stockent les données transférées entre des composants tels que le processeur et le disque dur, ce qui facilite la communication. Cependant, un excès de données mises en mémoire tampon peut entraver la vitesse du système.
Espace d’échange
L’espace d’échange est une zone allouée sur le disque dur qui agit comme de la mémoire virtuelle lorsque la RAM physique est épuisée. Bien qu’il empêche les pannes du système en raison d’une mémoire insuffisante, il peut ralentir le système s’il est surutilisé.
Effacement du cache, de la mémoire tampon et de l’espace d’échange sous Linux
Dans certaines situations, vous devrez peut-être vider le cache, la mémoire tampon ou l’espace d’échange, comme expliqué ci-dessous.
Comment vider le cache de la mémoire RAM sous Linux ?
Chaque système Linux dispose de trois options pour vider le cache sans interrompre les processus ou les services.
Effacement de PageCache
1. Pour effacer le PageCache uniquement, vous pouvez utiliser la commande suivante, qui effacera spécifiquement le PageCache, aidant à libérer des ressources de mémoire.
sudo sync; echo 1 > /proc/sys/vm/drop_caches
Effacement des entrées et des inodes
2. Pour effacer les entrées et les inodes uniquement, vous pouvez utiliser la commande suivante, qui synchronisera le système de fichiers et effacera à la fois les entrées et les inodes, améliorant ainsi les performances du système en libérant les informations de répertoire et d’inode mis en cache.
sudo sync; echo 2 > /proc/sys/vm/drop_caches
Effacement de PageCache, de Dentries et d’Inodes
3. Pour effacer le cache de page, les dentries et les inodes, vous pouvez utiliser la commande suivante, qui synchronisera le système de fichiers et effacera le cache de page, les dentries et les inodes, ce qui permettra de libérer de la mémoire et d’améliorer les performances du système.
sudo sync; echo 3 > /proc/sys/vm/drop_caches
Voici une explication de chaque partie de la commande ci-dessus :
- Le
sudoest utilisé pour exécuter la commande en tant que superutilisateur. - La
synchronisationvidera la mémoire tampon du système de fichiers. - Le point-virgule
« ; "est utilisé pour séparer plusieurs commandes sur une seule ligne. - La commande
echo 3 > /proc/sys/vm/drop_cachespermet de supprimer le cache de page, une zone de stockage temporaire pour les fichiers récemment consultés.
Remarque : Le fichier drop_caches contrôle le type de données mises en cache qui doit être effacé et les valeurs sont les suivantes :
1– Efface uniquement le cache de la page.2– Efface les entrées et les inodes.3– Efface le cache de la page, les dentiments et les inodes.
Comme mentionné dans la documentation du noyau, écrire dans drop_caches nettoiera le cache sans tuer aucune application/service, la commande echo fait le travail d’écriture dans le fichier.
Si vous devez vider le cache du disque, la première commande est la plus sûre en entreprise et en production car "... écho 1 > .... " effacera uniquement le PageCache.
Il n’est pas recommandé d’utiliser la troisième option ci-dessus "... Echo 3 > " en production jusqu’à ce que vous sachiez ce que vous faites, car il effacera le cache de page, les dentures et les inodes.
Comment libérer de l’espace d’échange sous Linux ?
Pour libérer de l’espace d’échange, vous pouvez utiliser la commande swapoff avec l’option -a, ce qui désactivera toutes les partitions d’échange.
sudo swapoff -a
Ensuite, retournez-le en exécutant la commande suivante, qui activera toutes les partitions d’échange.
sudo swapon -a
Est-il conseillé de libérer de la mémoire tampon, du cache et de l’échange sous Linux ?
En général, ce n’est pas une bonne idée de libérer manuellement la mémoire tampon et le cache sous Linux qui pourraient être utilisés par le noyau Linux, qui est conçu pour gérer efficacement ces ressources, et les effacer manuellement peut perturber les performances du système.
Toutefois, il peut y avoir de rares situations où vous devez vider la mémoire tampon et le cache, par exemple si vous rencontrez une forte sollicitation de la mémoire et que vous ne pouvez pas libérer de la mémoire par d’autres moyens. Dans ce cas, vous devez faire preuve de prudence et être conscient de l’impact potentiel sur les performances.
De même, libérer de l’espace d’échange sous Linux n’est généralement pas une pratique courante ou recommandée dans des circonstances normales.
Automatisation de l’optimisation de la mémoire
Pour automatiser le processus et vider régulièrement la mémoire, vous pouvez configurer une tâche cron pour exécuter les commandes à des intervalles spécifiés.
Ouvrez la configuration crontab.
crontab -e
Ajoutez les lignes suivantes pour vider le cache, la mémoire tampon et l’espace d’échange tous les jours à minuit :
0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a
Pour plus d’informations sur la planification d’une tâche avec cron, vous pouvez vous référer à notre article intitulé « 11 Cron Scheduling Jobs ».
Est-il conseillé de vider le cache RAM sur un serveur de production Linux ?
Non, ce n’est pas le cas. Imaginons que vous ayez programmé un script pour vider le cache de la RAM tous les jours à 2 heures du matin. Chaque jour à 2 heures du matin, le script est exécuté, vidant votre cache RAM. Cependant, un jour, un nombre inattendu d’utilisateurs sont en ligne sur votre site web, ce qui exerce une pression importante sur les ressources de votre serveur.
Simultanément, le script planifié s’exécute et efface tout ce qui se trouve dans le cache. Désormais, tous les utilisateurs récupèrent des données à partir du disque, ce qui peut entraîner une panne du serveur et une corruption de la base de données. Par conséquent, il est essentiel de ne vider le cache de la RAM que lorsque cela est nécessaire, en étant conscient de vos actions. Sinon, vous risquez de devenir un administrateur système de Cargo Cult.
Conclusion
Une gestion efficace de la mémoire est cruciale pour un système Linux fonctionnant sans problème. L’effacement régulier de la mémoire RAM, du cache, de la mémoire tampon et de l’espace d’échange peut améliorer considérablement les performances du système. En comprenant ces mécanismes et en utilisant les commandes fournies, vous pouvez maintenir votre système Linux à son meilleur fonctionnement.
C’est tout pour l’instant. Si vous avez apprécié l’article, n’oubliez pas de partager vos précieux commentaires dans les commentaires. Faites-nous part de vos réflexions sur ce que vous pensez être une bonne approche pour vider le cache et la mémoire tampon de la RAM dans les environnements de production et d’entreprise.