Comment effacer le cache sur Linux

Comment effacer le cache sur Linux
Le cache du système de fichiers Linux (cache de page) est utilisé pour faire des opérations IO plus rapidement. Dans certaines circonstances, un administrateur ou un développeur pourrait vouloir effacer manuellement le cache. Dans cet article, nous expliquerons comment fonctionne le cache du système de fichiers Linux. Ensuite, nous montrerons comment surveiller l'utilisation du cache et comment effacer le cache. Nous ferons des expériences de performance simples pour vérifier que le cache fonctionne comme prévu et que le cache rinçage et la procédure claire fonctionnent également comme prévu.

Comment fonctionne le cache du système de fichiers Linux

Le noyau se réserve une certaine quantité de mémoire système pour la mise en cache des accès du disque du système de fichiers afin de faciliter les performances globales. Le cache de Linux est appelé le Cache de page. La taille du cache de page est configurable avec des valeurs par défaut généreuses activées pour mettre en cache de grandes quantités de blocs de disque. La taille maximale du cache et les politiques de savoir quand expulser les données du cache sont réglables avec les paramètres du noyau. L'approche de cache Linux est appelée un cache d'écriture. Cela signifie que si les données sont écrites sur le disque, elles sont écrites en mémoire dans le cache et marquées comme sales dans le cache jusqu'à ce qu'elle soit synchronisée sur le disque. Le noyau maintient des structures de données internes pour optimiser les données à expulser du cache lorsque plus d'espace est nécessaire dans le cache.

Pendant les appels du système de lecture de Linux, le noyau vérifiera si les données demandées sont stockées en blocs de données dans le cache, ce serait un hit de cache réussi et les données seront renvoyées du cache sans effectuer d'IO au système de disque. Pour un cache, les données seront récupérées à partir du système IO et le cache mis à jour en fonction des politiques de mise en cache car ces mêmes données sont susceptibles d'être demandées à nouveau.

Lorsque certains seuils d'utilisation de la mémoire sont atteints. Ceux-ci peuvent avoir un impact sur les performances de la mémoire et des applications intensives CPU et nécessitent un réglage des administrateurs et / / développeurs.

Utilisation de la commande gratuite pour afficher l'utilisation du cache

Nous pouvons utiliser la commande libre à partir de la ligne de commande afin d'analyser la mémoire système et la quantité de mémoire allouée à la mise en cache. Voir la commande ci-dessous:

# gratuit -m

Ce que nous voyons du gratuit La commande ci-dessus est qu'il y a 7.5 Go de RAM sur ce système. Sur ce seul 209 Mo est utilisé et 6.5 Mb est gratuit. 667 MB est utilisé dans le cache tampon. Essayons maintenant d'augmenter ce nombre en exécutant une commande pour générer un fichier de 1 gigaoctet et en lisant le fichier. La commande ci-dessous générera environ 100 Mo de données aléatoires, puis ajoutera 10 copies du fichier ensemble en une grand_file.

# dd if = / dev / aléatoire de = / root / data_file count = 1400000
# pour i dans «seq 1 10»; faire écho $ i; CAT DATA_FILE >> BLAND_FILE; fait

Nous allons maintenant nous assurer de lire ce fichier de 1 gig, puis de vérifier à nouveau la commande gratuite:

# chat grand_file> / dev / null
# gratuit -m

Nous pouvons voir que l'utilisation du cache tampon est passée de 667 à 1735 mégaoctets, une augmentation d'environ 1 gigaoctet dans l'utilisation du cache tampon.

Proc Sys VM Drop Caches Command

Le noyau Linux fournit une interface pour supprimer le cache, essayons ces commandes et voyons l'impact sur le paramètre gratuit.

# echo 1> / proc / sys / vm / drop_caches
# gratuit -m

Nous pouvons voir ci-dessus que la majorité de l'allocation de cache de tampon a été libérée avec cette commande.

Vérification expérimentale qui fonctionne les caches

Pouvons-nous faire une validation de performances de l'utilisation du cache pour lire le fichier? Livrons le fichier et rémettons-le à / dev / null afin de tester le temps qu'il faut pour lire le fichier à partir du disque. Nous allons le chronométrer avec le temps commande. Nous faisons cette commande immédiatement après avoir effacé le cache avec les commandes ci-dessus.

Il a fallu 8.4 secondes pour lire le fichier. Relions à nouveau maintenant que le fichier doit être dans le cache du système de fichiers et voyons combien de temps il faut maintenant.

Boom! Il n'a pris que .2 secondes par rapport à 8.4 secondes pour le lire lorsque le fichier n'a pas été mis en cache. Pour vérifier, répétons-le à nouveau en effaçant d'abord le cache, puis en lisant le fichier 2 fois.

Cela a parfaitement fonctionné comme prévu. 8.5 secondes pour la lecture non en cache et .2 secondes pour la lecture en cache.

Conclusion

Le cache de page est automatiquement activé sur les systèmes Linux et facilitera de manière transparente IO en stockant des données récemment utilisées dans le cache. Si vous souhaitez effacer manuellement le cache qui peut être effectué facilement en envoyant une commande echo au système de fichiers / proc indiquant au noyau pour supprimer le cache et libérer la mémoire utilisée pour le cache. Les instructions pour l'exécution de la commande ont été montrées ci-dessus dans cet article et la validation expérimentale du comportement du cache avant et après la rinçage a également été affichée.