top
La page de manuel de ne décrit pas les champs, mais free
fait :
tampons
Mémoire utilisée par les tampons du noyau (
Buffers
en/proc/meminfo
)cache
Mémoire utilisée par le cache de pages et les slabs (
Cached
etSReclaimable
en/proc/meminfo
)buff/cache
Somme des tampons et du cache
disponible
Estimation de la quantité de mémoire disponible pour démarrer de nouvelles applications, sans échange. Contrairement aux données fournies par le cache ou les champs libres, ce champ prend en compte le pagecache et également que toutes les dalles de mémoire récupérables ne seront pas récupérées en raison des éléments en cours d'utilisation (
MemAvailable
en/proc/meminfo
, disponible sur les noyaux 3.14, émulé sur les noyaux 2.6.27+, sinon identique à gratuit)
Fondamentalement, "buff/cache" compte la mémoire utilisée pour les données qui sont sur le disque ou qui devraient s'y retrouver bientôt, et qui sont donc potentiellement utilisables (la mémoire correspondante peut être rendue disponible immédiatement, si elle n'a pas été modifiée depuis sa lecture , ou donné suffisamment de temps, si c'est le cas); "disponible" mesure la quantité de mémoire qui peut être allouée et utilisée sans provoquer d'échange supplémentaire (voir Comment puis-je obtenir la quantité de mémoire disponible de manière portable entre les distributions ? pour plus de détails à ce sujet).
Juste pour clarifier un peu, les tampons fait référence aux données en cours d'écriture -- cette mémoire ne peut pas être récupérée tant que l'écriture n'est pas terminée.
Cache fait référence aux données qui ont été lues -- il est conservé au cas où il aurait besoin d'être relu, mais peut être récupéré immédiatement puisqu'il peut toujours être relu à partir du disque.
La source canonique de ces informations est /usr/src/linux/Documentation/filesystems/proc.txt
Tampons :Le stockage relativement temporaire pour les blocs de disque bruts ne devrait pas être extrêmement volumineux (environ 20 Mo)En cache :cache en mémoire pour les fichiers lus depuis le disque (le cache de pages). N'inclut pas SwapCached.
Vous pouvez également trouver plus de détails ici.
Le cache de pages Linux ("En cache :" de meminfo ) est le plus gros consommateur de RAM sur la plupart des systèmes. Chaque fois que vous effectuez une lecture() à partir d'un fichier sur le disque, ces données sont lues en mémoire et placées dans le pagecache(1.).
Le cache de tampon ("Tampons :" dans meminfo) est un plus proche des caches dentry/inode.
Ou analysez le code source comme ceci.
Le montant de buffers
est la valeur de retour de la fonction nr_blockdev_pages(void)
long nr_blockdev_pages(void)
{
struct block_device *bdev;
long ret = 0;
spin_lock(&bdev_lock);
list_for_each_entry(bdev, &all_bdevs, bd_list) {
ret += bdev->bd_inode->i_mapping->nrpages;
}
spin_unlock(&bdev_lock);
return ret;
}
Le montant de cached
:
global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram