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

168

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?

Muahmmad Zeeshan
la source

Réponses:

232

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: Affiche 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+cachedet 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 swap (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, il Mem: freesera donc presque toujours très faible. Par conséquent, la ligne -/+ buffers/cache:est affichée, car elle 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 la freevaleur en -/+ buffers/cache:ligne est faible.

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

Changement de procps 3.3.10

Notez que la sortie de a freeété modifiée 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 été modifiée, principalement pour mieux rendre compte de la dalle du noyau Linux. cache.

Voir le rapport de bogue Debian n ° 565518 pour la motivation, et que freesignifient les changements de sortie de 14.04 à 16.04? pour plus d'informations.

sleske
la source
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 réseau?
CMCDragonkai
@CMCDragonkai: La réponse à serverfault.com/questions/23433/… adresse en détail ce qui constitue "cache" et "tampon".
Sleske
5
Je ne pense pas que la déclaration "total = utilisé + libre" soit 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
Sébastien
@ 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
3
total = used + free + buff/cache
danger89
2

La ligne buffers / cache indique la quantité de mémoire utilisée par les programmes (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.

femme
la source
Et que signifie la première ligne (ligne mem) signifie
Muahmmad Zeeshan
8
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 ne doivent pas être relues si nécessaire.
Womble
3
@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 ​​Gbits 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 environ). 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
4
Avez-vous envisagé de poser une nouvelle question à un moment donné?
womble
3
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