Что означают изменения в «свободном» выпуске с 14 по 16 апреля?

Я заметил, что отчеты о командах free изменились где-то между Trusty и Xenial. Вот то, что `free -m 'показывает на одном из моих компьютеров Trusty:

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

Вот эквивалент для (другой) системы Xenial:

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

+/- Строка буферов / кеша, на которую я в основном смотрел, пропала. Как мне следует интерпретировать новые числа?

  • Включает ли в память использованные / свободные буферы и кэш или нет?
  • Какие числа эквивалентны использованным и свободным числам на "+ / - буфер / кэш "строки более ранней версии?
29
задан 27 May 2016 в 16:03

1 ответ

Рассмотрите демонстрационный вывод, который я получил от free команда в моем Ubuntu 12.04:

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

Мадам used(kb_main_used) значение поля теперь вычисляется как это:

used = total - free - cached - buffers

Ранее, это раньше было:

used = total - free

Это изменение было представлено в следующей фиксации https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9

Промежуточное значение:

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

+ значение буферов/кэша/-вычисляется как это:

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

Новое значение любителя/кэша, вычисляет как это:

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

Это совпадает с buffers_plus_cached, используемый в предыдущих версиях, различие - то, что ранее это использовалось внутренне, и теперь ее отображенный непосредственно и далее расчетная строка, -/+ buffers/cache был удален

Для большего количества информации проверьте эти фиксации, где эти изменения были представлены: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8

С нового available поле, для ядер Linux, более старых, чем 2.6.27, его значение совпадает с free значение, но для более поздних версий Ядра, это несколько отличается:

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)

Любезность: http://manpages.ubuntu.com/manpages/xenial/en/man1/free.1.html

Так, определенный ответ на Ваши вопросы был бы:

  • Новая версия free включает буферы/кэш в вычисления Mem used/free значения.
  • +/- buffers/cache значение, которое раньше было там в предыдущих версиях free теперь доступно как:
    • - / + буферы/кэш used = Текущий Mem used столбец (Его вычисление детализировано выше),
    • - / + буферы/кэш free доступно как более точное значение в текущем новом столбце available

N.B: kb_* имена переменной являются внутренними именами, используемыми в исходном коде.

16
ответ дан 28 May 2016 в 02:03

Другие вопросы по тегам:

Похожие вопросы: