Как интерпретировать вывод команды «free -m»?


48

Вывод free -m:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

Какое значение используемой памяти является правильным, 482 или 93?

Ответы:


41

У вас есть 112 МБ полностью свободной памяти, НО 501 МБ, которые вы видите, не имеют «кэшированной» памяти. Это означает, что ОС поместила некоторые вещи в вашу память, чтобы быть быстрее. Он называет это «используется» (поэтому ваш «бесплатный» номер только 112), но на самом деле он доступен для вас, если вам это нужно.

Это хорошо, потому что неиспользуемая память - бесполезная память. Кэшированная память может быть очищена при необходимости. Старые вещи «Мне нужно очистить память», которые раньше делали для Windows 95, здесь не нужны: все хорошо и счастливо :)

Номер, который вы ищете, 501 бесплатный (в мегабайтах из-за -m).

см. для справки эти страницы:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux


По сути: «просто посмотрите на вторую строку, ту, что содержит буферы / кэш».
Нанн

25

Интерпретация вывода free:
Первая строка freeсписка вывода:

  • total Ваша общая физическая (при условии отсутствия виртуализации) память
  • used Сколько из этого в настоящее время используется (чем-либо)
  • free Сколько из этого совершенно бесплатно (не используется вообще)
  • shared (никогда ничего, игнорируйте этот столбец)
  • buffers Память, используемая буферами ядра
  • cached Память используется для кеша

Последние два элемента, кеш и буферы, это память, которая не выделена для определенных пользовательских процессов. Это память, зарезервированная ядром для повышения общей производительности, но не память «приложения». Эти области будут увеличиваться или уменьшаться в зависимости от политик ядра в отношении кэширования, нехватки памяти, шаблонов ввода-вывода приложений и т. Д.

Поскольку эти два столбца не являются выделенной пользователем памятью, и зоны могут сжиматься (практически до нуля), если это требуется для пользовательских выделений, они в некотором смысле «свободны» - там есть ОЗУ, которое может быть освобождено ядром, если ваши приложения Активно это нужно.

Это то, что говорит вторая строка. Он удаляет буфер и кеш-память из usedстолбца (вот что -значит) и добавляет ( +) их в freeстолбец. (Будет происходить округление.)

(Последняя строка показывает состояние вашего пространства подкачки.)

Предоставлено: https://unix.stackexchange.com/a/33549/14497

Итак, в вашем случае 112 МБ - это полностью свободная память, и если принять во внимание память, используемую для кэширования, которая может быть выделена для пользовательских приложений, если это необходимо; тогда 501 МБ - это фактический максимальный объем памяти, доступный для использования.


Человек, ищущий показания памяти, никогда не интересуется (или почти никогда) тем, сколько памяти полностью свободно, но сколько свободно использовать. кэшированная память «используется», но также бесплатна, так что вы должны на это посмотреть.
Нанн

Я не совсем уверен, почему ты так говоришь? Кажется, подразумевается, что кто-то намеренно удалит кеш (что на самом деле плохо)? Дело в том, что загрузка всего остального (например, программы, которую вы хотите использовать) в эту память на самом деле является опцией. Вы хотите, чтобы число 112 было как можно ниже, но в вашей теории это означает, что вы не можете открывать какие-либо программы. Не цель, которую я бы сказал. Кроме того: этот кеш - это не просто дисковый кеш, это еще и системный кеш и тому подобное
Nanne

@Nanne, хорошо. Я согласен, человек. Спасибо за исправление. Я обновил свой ответ, чтобы отразить то же самое.
saji89

##### СПАСИБО ВСЕМ @ Nanne @ devav2 @ saji89 ЗА ОБМЕН ЗНАНИЯМИ - ВЫ УДИВИТЕЛЬНЫ #####
amoooc

10

Ответ @ saji89 превосходен, но в наши дни строка free -mбольше не печатается -/+ buffers/cache, а вместо этого помещает объем доступной оперативной памяти в новый availableстолбец в первой строке, например:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

Вы можете прочитать коммит в free (1), который удалил строку в своем репо . Также обязательство добавить новый availableстолбец .


4

free Команда показывает информацию о неиспользуемой и используемой памяти и пространстве подкачки.

Ниже приведено объяснение, предоставленное http://www.linfo.org/free.html.

Первая строка, помеченная Mem , отображает использование физической памяти, включая объем памяти, выделенной для буферов и кэшей. Буфер, также называемый буферной памятью, обычно определяется как часть памяти, которая выделяется как временное хранилище для данных, которые отправляются или принимаются от внешнего устройства, такого как жесткий диск, клавиатура, принтер или сеть.

Вторая строка данных, которая начинается с - / + buffers / cache , показывает объем физической памяти, в настоящее время выделенной для системного буферного кэша. Это особенно важно в отношении прикладных программ, поскольку все данные, доступ к которым осуществляется из файлов в системе, которые выполняются с помощью системных вызовов read () и write (), проходят через этот кэш. Этот кэш может значительно ускорить доступ к данным, уменьшая или устраняя необходимость чтения или записи на жесткий диск или другой диск.

Третья строка, которая начинается с Swap , показывает общее пространство подкачки, а также, сколько из них используется в настоящее время и сколько еще доступно.

Давайте проанализируем использование памяти вашей системой

Вы использовали freeкоманду с параметром -m, который используется для отображения результата в мегабайтах

-m, --mega
              Display the amount of memory in megabytes.

Общая память 595 (используется + бесплатно)

Использовано: 482 Бесплатно: 112

В вашей системе используется 482 МБ из 595 МБ, при этом активные программы используют только 93 МБ, а оставшиеся 324 МБ находятся в кеше

Поэтому, когда вы в будущем запустите любую программу, скажем, для которой требуется больше 120 МБ. Будут предоставлены все 112 МБ (в настоящее время свободные), а оставшиеся 8 МБ будут взяты из буфера / кэша неактивной программы.

Изменить : нашел эту ссылку , которая обеспечивает хорошее объяснение.


Я не думаю, что это правильно. Если вы сбрасываете кеш, у вас есть 93mb, поэтому у вас осталось 501.
Нанн

Почему вы думаете, что это не правильно. Свободная память в операционной системе составляет 112 МБ + 324 МБ (которая кешируется). Таким образом, при запуске новой программы она сначала будет использовать 112 МБ, а затем кэш.
devav2

в основном, потому что 595-93=501 и (дайте или возьмите 1 МБ для округления), и это 112выглядит так, как будто это число, которое, по вашему мнению, ищет опера .
Нанн

501 правильно, и это то, что я пытаюсь объяснить. Из 595 482 используется. В которой только 93 является активной памятью, используемой программами. Таким образом, 112 является свободным доступным +, если необходимо больше, память можно взять из кэша, который ранее использовался и в настоящее время не активен.
devav2

хорошо, тогда согласитесь :)
Nanne
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.