Почему мой сервер показывает
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:
линия становится низкой.
Подробнее о значении чисел см., Например, вопросы:
Обратите внимание, что вывод 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 и Swapshared
(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)