Что означают изменения в "свободном" выпуске с 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
Строка +/- buffers / cache, на которую я в основном смотрел, пропала. Как я должен интерпретировать новые числа?
- Используются ли в Mem / free буферы и кеш или нет?
- Какие числа эквивалентны используемым и свободным числам в строке "+/- buffers/cache" более ранней версии?
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 вычисляется так:
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
- - / + буферы / кеш
NB: kb_*
имена переменных - это внутренние имена, используемые в исходном коде.