Pour moi, la différence entre les deux concepts de mémoire Linux n'est pas claire: buffer
et cache
. J'ai lu cet article et il me semble que la différence entre eux est la politique d'expiration:
- la politique du tampon est le premier entré, premier sorti
- la politique de cache est la moins récemment utilisée.
Ai-je raison?
En particulier, je regarde les deux commandes: free
etvmstat
james@utopia:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
5 0 0 173 67 912 0 0 19 59 75 1087 24 4 71 1
james@utopia:~$ free -m
total used free shared buffers cached
Mem: 2007 1834 172 0 67 914
-/+ buffers/cache: 853 1153
Swap: 2859 0 2859
free
sortie de la commande?Réponses:
Les «tampons» représentent la partie de la RAM dédiée aux blocs de disque de cache. "Cached" est similaire à "Buffers", mais cette fois, il met en cache les pages de la lecture de fichiers.
Citation de:
la source
cache
se remplit comme indiqué parfree -w -h
, pas labuffers
colonne. Je pense que lacache
colonne compte à la fois les écritures et les lectures de disque etbuffers
est utilisée pour autre chose.lien de devis
la source
Réponse citée (pour référence):
la source
Ce n'est pas `` tout à fait '' aussi simple que cela, mais cela pourrait aider à comprendre:
Le tampon sert à stocker les métadonnées des fichiers (autorisations, emplacement, etc.). Chaque page de mémoire est conservée ici.
Le cache sert à stocker le contenu réel du fichier.
la source
Expliqué par RedHat :
Pages de cache:
Un cache est la partie de la mémoire qui stocke les données de manière transparente afin que les futures demandes pour ces données puissent être traitées plus rapidement. Cette mémoire est utilisée par le noyau pour mettre en cache les données du disque et améliorer les performances d'E / S.
Le noyau Linux est construit de telle manière qu'il utilisera autant de RAM que possible pour mettre en cache les informations de vos systèmes de fichiers et disques locaux et distants. Au fur et à mesure que le temps passe au cours de diverses lectures et écritures effectuées sur le système, le noyau essaie de conserver les données stockées dans la mémoire pour les différents processus en cours d'exécution sur le système ou les données de processus pertinents qui seraient utilisés dans un proche avenir. Le cache n'est pas récupéré au moment où le processus s'arrête / quitte, mais lorsque les autres processus nécessitent plus de mémoire que la mémoire disponible disponible, le noyau exécutera une heuristique pour récupérer la mémoire en stockant les données du cache et en allouant cette mémoire au nouveau processus.
Lorsqu'un type de fichier / données est demandé, le noyau recherchera une copie de la partie du fichier sur laquelle l'utilisateur agit et, si aucune copie n'existe, il allouera une nouvelle page de mémoire cache et la remplira avec le contenu approprié lu sur le disque.
Les données stockées dans un cache peuvent être des valeurs calculées antérieurement ou des doublons de valeurs d'origine stockées ailleurs sur le disque. Lorsque certaines données sont demandées, le cache est d'abord vérifié pour voir s'il contient ces données. Les données peuvent être extraites plus rapidement du cache que de leur origine source.
Les segments de mémoire partagée SysV sont également comptabilisés comme un cache, bien qu'ils ne représentent aucune donnée sur les disques. On peut vérifier la taille des segments de mémoire partagée en utilisant la commande ipcs -m et en vérifiant la colonne d'octets.
Tampons:
Les tampons sont la représentation par blocs de disque des données stockées sous les caches de page. Buffers contient les métadonnées des fichiers / données qui résident sous le cache de page. Exemple: Lorsqu'il y a une demande de données présentes dans le cache de page, le noyau vérifie d'abord les données dans les tampons qui contiennent les métadonnées qui pointent vers les fichiers / données réels contenus dans les caches de page. Une fois que, à partir des métadonnées, l'adresse de bloc réelle du fichier est connue, elle est récupérée par le noyau pour traitement.
la source
tampon et cache.
Un tampon est quelque chose qui n'a pas encore été "écrit" sur le disque.
Un cache est quelque chose qui a été "lu" à partir du disque et stocké pour une utilisation ultérieure.
la source
Je pense que cette page vous aidera à comprendre en profondeur la différence entre tampon et cache. http://www.tldp.org/LDP/sag/html/buffer-cache.html
La lecture à partir d'un disque est très lente par rapport à l'accès à la mémoire (réelle). De plus, il est courant de lire plusieurs fois la même partie d'un disque pendant des périodes de temps relativement courtes. Par exemple, on peut d'abord lire un message électronique, puis lire la lettre dans un éditeur en y répondant, puis faire en sorte que le programme de messagerie la lise à nouveau lors de sa copie dans un dossier. Ou, considérez la fréquence à laquelle la commande
ls
peut être exécutée sur un système avec de nombreux utilisateurs. En lisant les informations du disque une seule fois, puis en les gardant en mémoire jusqu'à ce qu'elles ne soient plus nécessaires, on peut tout accélérer sauf la première lecture. C'est ce qu'on appelle la mise en mémoire tampon du disque, et la mémoire utilisée à cet effet est appelée le cache tampon.Puisque la mémoire est, malheureusement, une ressource limitée, voire rare, le cache tampon ne peut généralement pas être assez grand (il ne peut pas contenir toutes les données que l'on souhaite utiliser). Lorsque le cache se remplit, les données inutilisées le plus longtemps sont supprimées et la mémoire ainsi libérée est utilisée pour les nouvelles données.
La mise en mémoire tampon du disque fonctionne également pour les écritures. D'une part, les données qui sont écrites sont souvent rapidement relues (par exemple, un fichier de code source est enregistré dans un fichier, puis lu par le compilateur), donc mettre les données écrites dans le cache est une bonne idée. D'un autre côté, en ne mettant que les données dans le cache, et non en les écrivant sur le disque à la fois, le programme qui écrit s'exécute plus rapidement. Les écritures peuvent alors être effectuées en arrière-plan, sans ralentir les autres programmes.
la source
Le lien 2 de Seth Robertson a déclaré: "Pour une compréhension approfondie de ces termes, reportez-vous au livre sur le noyau Linux comme Linux Kernel Development par Robert M. Love."
J'ai trouvé du contenu sur «tampon» dans la 2ème édition du livre.
la source
Le tampon contient des métadonnées qui aident à améliorer les performances d'écriture
Le cache contient le contenu du fichier lui-même (parfois encore à écrire sur le disque), ce qui améliore les performances de lecture
la source
Citation du livre: Introduction à la recherche d'informations
Cache
Tampon
la source
Un tampon est une région de mémoire utilisée pour contenir temporairement des données pendant qu'elles sont déplacées d'un endroit à un autre dans un ordinateur, tandis qu'un cache est une zone de stockage temporaire où les données fréquemment consultées peuvent être stockées pour un accès rapide. Une fois que les données sont stockées dans le cache, une utilisation future peut être faite en accédant à la copie mise en cache plutôt qu'en récupérant les données d'origine, de sorte que le temps d'accès moyen soit plus court.
la source