Пожалуйста, рассмотрите пример вывода, который я получил из 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
Значение поля Memused
(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 вычисляется так:
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/c9908bbb1808111.
Что касается нового 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
теперь доступен как:
- - / + buffers / cache
used
= текущий Mem used
столбец (его расчет подробно описан выше)
- - / + буферы / кеш
free
доступны как более точное значение в текущем новом столбцеavailable
Примечание: В качестве kb_*
имен переменных являются внутренними именами , используемыми в исходном коде.