free
tire ses données de /proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
Il s'agit de la mémoire utilisée pour le stockage temporaire des blocs d'E/S. Le noyau doit constamment affecter et libérer les mêmes unités de taille, comme les blocs de transfert d'E/S, les paquets réseau et les tampons de socket
Vous pouvez obtenir un meilleur aperçu des caches et des allocations de tampon en exécutant slabtop
En réponse à votre question d'utilisation :le système allouera généralement plus de blocs qu'il n'en a besoin, mais à mesure que la « pression de la mémoire » augmente, ces blocs supplémentaires seront libérés.
Les "tampons" sont récupérables sous la pression de la mémoire. Il est donc similaire au cache de page (colonne "cache"); pas une grande cause d'inquiétude. La valeur "buffers" peut être petite ou grande, cela dépend de ce que fait votre système :-). Nous pouvons trouver plusieurs types de cache recensés ici.
Le cache de tampon est littéralement le cache de page pour le périphérique de bloc. Linux les signale simplement séparément.[*] Vous pouvez remarquer l'utilisation de "tampons" pendant que les programmes lisent/écrivent le nœud du périphérique de bloc, par ex. dd status=progress if=/dev/sda of=/dev/null
. Apparemment, les gens le remarquent également lors de l'exécution d'un programme de lecteur de DVD.
Pour preuve, voir :30 % de la RAM sont des "tampons". Qu'est-ce que c'est ?
Si vous n'avez pas accédé au nœud du périphérique de bloc, vos "tampons" sont probablement tous des métadonnées du système de fichiers . Les systèmes de fichiers utilisent le cache de tampon en interne pour plus de commodité. Ils s'assurent qu'il ne duplique jamais le fichier data - contenu du fichier - qui est stocké dans le cache de la page principale. La raison exacte pour laquelle le système de fichiers utilise le cache de tampon - le cas échéant - varie en fonction du système de fichiers.
Sur une machine avec une petite quantité de RAM physique, j'ai remarqué que les "tampons" peuvent sembler élevés, lorsque j'ai des systèmes de fichiers ext3/ext4. En effet, les écritures dans le journal passent par le cache tampon. (Voir lien ci-dessus). Les systèmes de fichiers ext3/4 stockent également le contenu des répertoires dans le cache du tampon.
Deuxièmement, les "tampons" indiqués par le free
La commande inclut également SReclaimable, c'est-à-dire des dalles récupérables. (Démontré ici :La bonne façon de surveiller la mémoire Linux, encore une fois).
La mémoire de dalle n'est pas une partie du cache de page/tampon. Cependant, il est commode de les compter ensemble. Ils sont tous deux récupérables, et la principale (unique ?) utilisation des dalles récupérables est pour la mise en cache du système de fichiers. Par exemple, les métadonnées de fichier (inodes) et les recherches de chemin (dentry) sont mises en cache dans des dalles récupérables. "La mémoire de dalle récupérable [peut] occuper une grande partie de la mémoire système sur des systèmes principalement inactifs avec beaucoup de fichiers."
Vous pouvez voir le Buffers
brut et SReclaimable
valeurs en cat /proc/meminfo
. Vous pouvez également exécuter slabtop
pour voir la liste des dalles. AFAICT, slabtop
ne donne pas de statistiques sur les dalles comme récupérables ou non. Mais vous pouvez généralement deviner, et s'il y a une dalle suspecte, je suppose que vous pouvez la rechercher par son nom.
[*] Aux fins de cette réponse, "cache tampon" est le cache compté par Buffers
en /proc/meminfo
. Cependant, d'autres sources peuvent faire référence à l'ensemble du cache de page en tant que cache de tampon unifié. Si vous voulez l'explication historique, voir le premier lien.
De plus, les développeurs Linux ont peut-être utilisé le "cache tampon" pour signifier différentes choses, lorsqu'ils se disputaient sur les implémentations du système de fichiers.