Que signifient les changements de sortie «libre» de 14.04 à 16.04?

29

J'ai remarqué que le freerapport de commande a changé quelque part entre Trusty et Xenial. Voici ce que «free -m» affiche sur l'un de mes ordinateurs Trusty:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7916       7645        271         99        455       1764
-/+ buffers/cache:       5426       2490
Swap:        24999        805      24194

Voici l'équivalent sur (un autre) système Xenial:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3553        1192         857          16        1504        2277
Swap:          3689           0        3689

La ligne +/- buffers / cache, que j'utilisais principalement pour regarder, a disparu. Comment dois-je interpréter les nouveaux chiffres?

  • Mem utilisé / gratuit inclut-il ou non des tampons et du cache?
  • Quels sont les nombres équivalents aux nombres utilisés et libres sur la ligne "+/- buffers / cache" de la version précédente?
otus
la source

Réponses:

16

Veuillez considérer l'exemple de sortie que j'ai obtenu de la freecommande dans mon Ubuntu 12.04:

           total       used       free     shared    buffers     cached
Mem:       8074640    6187480    1887160     377056     365128    2113156
-/+ buffers/cache:    3709196    4365444
Swap:     15998972      82120   15916852

La valeur du champ Memused (kb_main_used) est maintenant calculée comme suit:

used = total - free - cached - buffers

Auparavant, il s'agissait:

used = total - free

Cette modification a été introduite dans la validation suivante https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9

Une valeur intermédiaire:

buffers_plus_cached = buffers (kb_main_buffers) + cached (kb_main_cached) = 365128 + 2113156 = 2478284

+/- tampons / valeur de cache est calculé comme suit:

buffers = kb_main_used - buffers_plus_cached = 6187480 - 2478284 = 3709196
/
cache = kb_main_free + buffers_plus_cached = 1887160 + 2478284 = 4365444

La nouvelle valeur de buff / cache est calculée comme ceci:

buff/cache = kb_main_buffers+kb_main_cached = 365128 + 2113156 = 2478284

C'est le même que celui buffers_plus_cachedutilisé dans les versions précédentes, la différence est qu'avant, il était utilisé en interne, et maintenant son affiché directement, et la ligne calculée supplémentaire, -/+ buffers/cachea été supprimée

Pour plus d'informations, veuillez vérifier ces validations, là où ces modifications ont été introduites: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b56129

Depuis le nouveau availablechamp, pour les noyaux Linux antérieurs à 2.6.27, sa valeur est la même que la freevaleur, mais pour les versions ultérieures du noyau, c'est un peu différent:

Estimation of how much memory  is  available  for  starting  new
applications,  without swapping. Unlike the data provided by the
cache or free fields, this field takes into account  page  cache
and also that not all reclaimable memory slabs will be reclaimed
due to  items  being  in  use  (MemAvailable  in  /proc/meminfo,
available   on   kernels  3.14,  emulated  on  kernels  2.6.27+,
otherwise the same as free)

Courtoisie: http://manpages.ubuntu.com/manpages/xenial/en/man1/free.1.html

Ainsi, la réponse spécifique à vos questions serait:

  • La nouvelle version de freecomprend des tampons / cache dans les calculs de Mem used/freevaleurs.
  • La +/- buffers/cachevaleur qui existait auparavant dans les versions précédentes de freeest désormais disponible sous la forme:
    • - / + buffers / cacheused = Mem usedColonne courante (Son calcul est détaillé ci-dessus)
    • - / + tampons / cachefree est disponible comme valeur la plus précise dans la nouvelle colonne actuelleavailable

NB: Les kb_*noms de variables sont les noms internes utilisés dans le code source.

saji89
la source
1
Cette réponse pourrait être améliorée en mettant la réponse spécifique = "la partie tl; dr" en haut et les détails ci-dessous (en ce moment c'est l'inverse).
Nikana Reklawyks
C'est une excellente explication mais sur OpenVZ exécutant Ubuntu 16.04, je vois que "disponible" ne vient même pas près de la colonne libre dans "+/- tampons / cache" sur le précédent "gratuit". Ayant les mêmes applications en cours d'exécution, j'obtiens 120 Mo gratuits le 14.04 et près de 0 disponibles le 16.04. Soit l'utilisation du ram est complètement différente sur ces deux systèmes ou l'un des packages de ces logiciels gratuits est faux (ou c'est juste OpenVZ un gâchis pour ces choses).
Sandro Antonucci