Назад | Перейти на главную страницу

Значение строки буферов / кеша в выводе free

Почему мой сервер показывает

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Я понятия не имею, как подсчитывать память в linux. Я думаю, там говорится, что используется 5088232, поскольку 7198224 является бесплатным, что означает, что он фактически потребляет 5 ГБ ОЗУ?

Значение значений

Первая строка означает:

  • total: Ваша общая (физическая) оперативная память (за исключением небольшого бита, который ядро ​​постоянно резервирует для себя при запуске); поэтому он показывает ок. 11,7 ГиБ, а не 12 ГиБ, которые у вас, вероятно, есть.
  • used: память, используемая ОС.
  • free: память не используется.

total знак равно used + free

  • shared / buffers / cached: Показывает использование памяти для определенных целей, эти значения включены в значение для used.

Во второй строке приведены скорректированные значения первой строки. Это дает исходное значение для used минус сумма buffers+cached и исходное значение для free плюс сумма buffers+cached, отсюда и его название. Эти новые значения часто более значимы, чем значения в первой строке.

Последняя строка (Swap:) предоставляет информацию об использовании пространства подкачки (т. е. о содержимом памяти, которое было временно перемещено на диск).

Задний план

Чтобы на самом деле понять, что означают цифры, вам нужно немного узнать о подсистеме виртуальной памяти (ВМ) в Linux. Краткая версия: Linux (как и большинство современных ОС) всегда будет пытаться использовать свободную оперативную память для кеширования файлов, поэтому Mem: free почти всегда будет очень низким. Поэтому строка -/+ buffers/cache: отображается, потому что показывает, сколько памяти свободно при игнорировании кешей; кеши будут освобождены автоматически, если памяти станет мало, поэтому они не имеют особого значения.

В системе Linux действительно мало памяти, если free ценность в -/+ buffers/cache: линия становится низкой.

Подробнее о значении чисел см., Например, вопросы:

Изменения в procps 3.3.10

Обратите внимание, что вывод free был изменен в procps 3.3.10 (выпущен в 2014 году). Сообщаемые столбцы теперь «всего», «использовалось», «бесплатно», «совместно», «бафф / кеш», «доступно», и значения некоторых значений изменились, в основном для лучшего учета блочного кэша ядра Linux.

Видеть Отчет об ошибке Debian № 565518 для мотивации и Какие изменения в free вывод с 14.04 по 16.04 означает? для более подробной информации.

Строка буферов / кеша показывает, сколько памяти используется программами (первый из этих столбцов) и свободна для использования программами (второй столбец). Это довольно эзотерическое число, и на практике это не то, на что стоит обращать внимание.

В настоящее время принятый ответ от 2009 года устарело. Важно убедиться, что информация, которую вы получаете, верна и соответствует версии free (распространяется в пакете Debian procps или эквивалент в вашем дистрибутиве). Также полезно посмотреть на вывод man free, а также man 5 proc, который содержит информацию о /proc/meminfo, файл, в котором free получает свои данные из Linux.

По умолчанию, freeвывод находится в кибибайты (1 кибибайт = 1024 байта), как вы можете видеть на странице руководства. Я предпочитаю использовать -h аргумент, который показывает суффиксы, например:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       6.1Gi       1.9Gi       301Mi       7.5Gi       8.8Gi
Swap:         979Mi          0B       979Mi

Первая линия Mem средства:

  • total (Mem): общая установленная память (то есть MemTotal плюс SwapTotal из /proc/meminfo), это вся память в ОЗУ плюс память, выделенная для Замена
  • used (Mem): использованная память, равная total - free - buffers - cache
  • free (Mem): неиспользуемая память (то есть MemFree плюс SwapFree), это вся память, которая ни для чего не используется (даже кеши) в RAM и Swap
  • shared (Mem): это объем памяти, используемый в основном для tmpfs (Shmem)
  • buff/cache (Mem), сумма buffers и cache:
    • buffers: память, используемая буферами ядра (Buffers), то есть память, которую ядро ​​может использовать
    • cache: память, используемая кешем страницы и блоками (Cached и SReclaimable). В кеш страницы содержит содержимое файлов в файловой системе, кэшированное в ОЗУ, и, как правило, рекомендуется, чтобы это число было большим. Я предполагаю, что «плиты» - это аналогичная функция кеширования.
  • available (Mem): это приблизительный объем памяти, доступный для запуска новых приложений без подкачки. Он включает большую часть памяти, подсчитанной в cache (поскольку кеш страницы можно отбросить для запуска новых приложений), но оно не учитывает подкачку (поскольку обычно предпочтительно не использовать медленное пространство подкачки).

Вторая строка Swap, а man страница не объясняет эту строку по какой-либо причине. Это мое объяснение:

  • total (Swap): это общий объем дискового пространства, зарезервированного для swap. Вы можете проверить, проверив, что это совпадает с выводом swapon -s.
  • used (Swap): объем дискового пространства подкачки, который используется в данный момент. Опять же, вы можете проверить это, сравнив его с выводом swapon -s
  • free (Swap): объем дискового пространства подкачки, которое в настоящее время не используется. Это равно total (Swap) - used (Swap)