Dans la sortie de top, il y a deux champs, marqués "buff/cache" et "avail Mem" dans la mémoire et permutez les lignes d'utilisation:
Que signifient ces deux domaines?
J'ai essayé de les googler, mais les résultats ne font apparaître que des articles génériques en haut, et ils n'expliquent pas ce que ces champs signifient.
La page de manuel de top
ne décrit pas les champs, mais free
’s :
tampons
Mémoire utilisée par les tampons du noyau (
Buffers
in/proc/meminfo
)cache
Mémoire utilisée par le cache de pages et les dalles (
Cached
etSReclaimable
dans/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 cache de page et également que toutes les dalles de mémoire récupérables ne seront pas récupérées en raison d'éléments en cours d'utilisation (
MemAvailable
in/proc/meminfo
, disponible sur les noyaux 3.14, émulé sur les noyaux 2.6.27+, sinon le même que gratuit)
Fondamentalement, "buff/cache" compte la mémoire utilisée pour les données qui se trouvent sur le disque ou qui devraient y arriver bientôt, et par conséquent est potentiellement utilisable (la mémoire correspondante peut être mise à disposition immédiatement, dans le cas du cache, ou avec suffisamment de temps, dans le cas des tampons - ces derniers sont supposés de toute façon rester petits); "Available" mesure la quantité de mémoire qui peut être allouée et utilisée sans provoquer plus de swaps (voir Comment puis-je obtenir la quantité de mémoire disponible de manière portable sur les distributions? pour beaucoup plus de détails à ce sujet).
Juste pour clarifier un peu, tampons fait référence aux données qui sont écrites - que la 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é read - elles sont conservées au cas où elles devraient être relues, mais peuvent être immédiatement récupérées car elles peuvent toujours être relues à 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 (20 Mo environ) En cache : cache en mémoire pour les fichiers lus sur le disque (le cache de page). N'inclut pas SwapCached.
Vous pouvez également trouver plus de détails ici .
Le cache de page Linux (" mis en cache :" de meminfo) est le plus grand 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 vont dans le cache de pages (1.).
Le cache de tampons (" Tampons :" dans meminfo) est un parent proche des caches dentry/inode.
Ou analysez le code source comme this .
La quantité 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