O que significam as alterações na saída 'livre' de 14.04 a 16.04?

28

Percebi que o relatório do comando free foi alterado em algum lugar entre o Trusty e o Xenial. Aqui está o que 'free -m' mostra em um dos meus computadores Trusty:

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

Aqui está o equivalente em um sistema Xenial diferente:

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

A linha de buffers / cache +/-, que eu costumava ver, desapareceu. Como devo interpretar os novos números?

  • O Mem usado / livre inclui buffers e cache ou não?
  • Quais números são o equivalente dos números usados e gratuitos na linha "+/- buffers / cache" da versão anterior?
por otus 10.05.2016 / 08:28

1 resposta

14

Por favor, considere o exemplo de saída que recebi do comando free no meu Ubuntu 12.04 :

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

O valor do campo Mem used (kb_main_used) agora é calculado da seguinte forma:

used = total - free - cached - buffers

Anteriormente, costumava ser:

used = total - free

Esta alteração foi introduzida no seguinte link link

Um valor intermediário:

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

+/- buffers / cache é calculado da seguinte forma:

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

O novo valor de buff / cache é calculado assim:

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

Isso é o mesmo que o buffers_plus_cached , usado nas versões anteriores, a diferença é que anteriormente ele era usado internamente e agora é exibido diretamente, e a linha calculada adicional, -/+ buffers/cache foi removida

Para mais informações, confira esses commits, onde essas alterações foram introduzidas: link link

A partir do novo campo available , para os kernels Linux mais antigos que o 2.6.27, seu valor é o mesmo que o valor free , mas para as versões posteriores do Kernel, é um pouco diferente:

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)

Cortesia: link

Então, a resposta específica para suas perguntas seria:

  • A nova versão de free inclui buffers / cache nos cálculos dos valores Mem used/free .
  • O valor +/- buffers/cache que costumava estar lá nas versões anteriores de free agora está disponível como:
    • - / + buffers / cache used = coluna atual Mem used (seu cálculo é detalhado acima)
    • - / + buffers / cache free está disponível como o valor mais preciso na nova coluna atual available

N.B: Os nomes das variáveis kb_* são os nomes internos usados no código-fonte.

    
por saji89 10.05.2016 / 09:33