web-dev-qa-db-fra.com

Que signifient les changements dans la sortie `free` de 14.04 à 16.04?

J'ai remarqué que la génération de rapports de la commande free avait changé quelque part entre Trusty et Xenial. Voici ce que `free -m 'montre 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 +/- tampons/cache, que je regardais principalement, a disparu. Comment dois-je interpréter les nouveaux chiffres?

  • Est-ce que Mem used/free inclut des tampons et cache ou non?
  • Quels sont les nombres équivalents aux nombres libres et utilisés sur la ligne "+/- buffers/cache" de la version précédente?
29
otus

Veuillez considérer l'exemple de sortie obtenu avec la commande freedans 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 Mem usedname __ (kb_main_used) est maintenant calculée comme suit:

used = total - free - cached - buffers

Auparavant, c'était:

used = total - free

Cette modification a été introduite dans le commit suivant https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b7e6c96f197f358f511f8ed9

Une valeur intermédiaire:

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

La valeur +/- des tampons/cache est calculée 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 buff/cache est calculée comme suit:

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

Identique au buffers_plus_cached, utilisé dans les versions précédentes, la différence était qu'il était auparavant utilisé en interne, et qu'il est maintenant affiché directement. La ligne suivante, -/+ buffers/cache, a été supprimée.

Pour plus d'informations, veuillez vérifier ces commits, où ces modifications ont été introduites: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8

À partir du nouveau champ availablename__, pour les noyaux Linux antérieurs à 2.6.27, sa valeur est identique à la valeur freename__, mais pour les versions ultérieures du noyau, sa valeur est légèrement différente:

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)

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

La réponse spécifique à vos questions serait donc:

  • La nouvelle version de freeinclut des tampons/cache dans les calculs des valeurs de Mem used/free.
  • La valeur +/- buffers/cache qui existait auparavant dans les versions précédentes de freeest maintenant disponible en tant que:
    • -/+ buffers/cache usedname __ = colonne Mem used actuelle (son calcul est détaillé ci-dessus)
    • -/+ buffers/cache freename __ est disponible en tant que valeur plus précise dans la nouvelle colonne en cours availablename__

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

16
saji89