web-dev-qa-db-fra.com

Que signifient les champs "buff / cache" et "avail mem" en haut?

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:

enter image description here

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.

37
user2064000

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 et SReclaimable 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).

38
Stephen Kitt

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.

4
WallStProg

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
2
axiqia