Question Signification de la mémoire tampon / ligne de cache dans la sortie de free


Pourquoi mon serveur montre

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Je n'ai aucune idée sur le calcul de la mémoire sous Linux. Je pense qu'il est dit que 5088232 est utilisé alors que 7198224 est gratuit, ce qui signifie qu'il consomme en réalité 5 Go de RAM?


150
2017-11-17 10:37


origine


serverfault.com/questions/23433/… - Kyle Brandt♦
linuxatemyram.com - Sasha


Réponses:


Signification des valeurs

La première ligne signifie:

  • total: Votre RAM physique (physique) (à l’exception d’un petit peu que le noyau se réserve en permanence au démarrage); c'est pourquoi ça montre ca. 11,7 Gio, et non 12 Gio, que vous avez probablement.
  • used: mémoire utilisée par le système d'exploitation.
  • free: mémoire non utilisée.

total = used + free

  • shared / buffers / cached: Ceci montre l'utilisation de la mémoire à des fins spécifiques, ces valeurs sont incluses dans la valeur de used.

La deuxième ligne donne les valeurs de première ligne ajustées. Il donne la valeur d'origine pour used  moins la somme buffers+cached et la valeur d'origine pour free  plus la somme buffers+cached, d'où son titre. Ces nouvelles valeurs sont souvent plus significatives que celles de première ligne.

La dernière ligne (Swap:) donne des informations sur l’utilisation de l’espace de permutation (c’est-à-dire le contenu de la mémoire qui a été temporairement déplacé sur le disque).

Contexte

Pour comprendre réellement la signification des chiffres, vous avez besoin d'un peu de connaissance sur le sous-système de mémoire virtuelle (VM) sous Linux. Juste une version courte: Linux (comme la plupart des systèmes d’exploitation modernes) essaiera toujours d’utiliser de la RAM libre pour mettre en cache des éléments, Mem: free sera presque toujours très faible. Donc la ligne -/+ buffers/cache: est affiché, car il indique la quantité de mémoire disponible en ignorant les caches; les caches seront automatiquement libérés si la mémoire se raréfie, ils n'ont donc pas d'importance.

Un système Linux manque vraiment de mémoire si le free valeur en -/+ buffers/cache: la ligne devient basse.

Pour plus de détails sur la signification des chiffres, voir par exemple questions:

Changement de procps 3.3.10

Notez que la sortie de free a été modifié dans procps 3.3.10 (publié en 2014). Les colonnes rapportées sont maintenant "total", "utilisé", "libre", "partagé", "buff / cache", "disponible", et la signification de certaines valeurs a changé, principalement pour mieux prendre en compte le cache de dalle du noyau Linux.

Voir Rapport de bogue Debian n ° 565518 pour la motivation, et Que font les changements dans free sortie de 14.04 à 16.04 signifie? pour plus d'informations.


215
2017-11-17 11:42



Pourriez-vous développer le type d'éléments mis en cache par Linux? Serait-ce des fichiers qui ont été consultés ou des trucs de réseau? - CMCDragonkai
@CMCDragonkai: la réponse à serverfault.com/questions/23433/… adresse en détail ce qui constitue "cache" et "tampon". - sleske
Je ne pense pas que la déclaration "total = utilisé + libre" est correcte, voir la sortie suivante sur ma machine: $ free -h  total used free shared buff/cache available  Mem: 3.4G 585M 152M 11M 2.6G 2.5G  Swap: 4.0G 84M 3.9G - Sebastian
@ Sébastian: Ah, intéressant. Il semble que la sortie de free ait été modifiée (en 3.3.10). J'ai édité ma réponse pour le mentionner. Si ce changement vous intéresse, envisagez de poser une nouvelle question :-). - sleske
total = used + free + buff/cache - danger89


Pour ceux qui ont besoin d’une explication étape par étape encore plus simple, cochez http:// Thoughtsbyclayg.blogspot.com/2008/09/display-free-memory-on-linux-ubuntu.html, son explication m'a beaucoup aidé.


7
2018-02-13 22:06



meta.stackexchange.com/q/8231/133242 - Matt Ball


La ligne buffers / cache indique la quantité de mémoire utilisée par les programmes (la première de ces colonnes) et est libre pour les programmes (deuxième colonne). C'est un nombre assez ésotérique, et ce n'est pas quelque chose que vous examineriez vraiment beaucoup dans la pratique.


2
2017-11-17 11:03



Et que signifie la première ligne (ligne mem)? - Muahmmad Zeeshan
Le système dispose de 12 Go de RAM, dont 11,5 Go sont utilisés et environ 0,5 Go sont actuellement inutilisés. Environ 82 Mo de la mémoire utilisée est utilisée pour les mémoires tampons (connexions réseau, etc.), tandis qu’environ 6,5 Go sont utilisés pour stocker des copies de données sur disque, de sorte que les données n’auront pas à être lues si nécessaire. - womble♦
@Muhammad: "82MB est gratuit." - non, 57MiB est gratuit (mais cela n'a pas d'importance, voir ma réponse). "Maintenant, tout cela signifie que le système a atteint ses limites" - Non, pas du tout. Le système utilise 6,9 ​​Gio pour la mise en cache, qu’il donnera facilement aux applications, ce qui laisse beaucoup de place. En outre, l'utilisation de swap est très faible (environ 50 Mo). Si la mémoire commence à être serrée, l'utilisation de l'échange augmentera. Actuellement, vous utilisez à peine la moitié de la RAM dont vous disposez. - sleske
Avez-vous envisagé de poser une nouvelle question à un moment donné? - womble♦
Je suis en désaccord, la ligne de mémoire tampon / cache est la mémoire libre réelle du système et est donc plus pertinente si vous voulez savoir si le système a de la place pour des programmes. - eckes