Linux утилита free
Как посмотреть объём оперативной памяти и файла подкачки? Как узнать, сколько оперативной памяти используется в настоящее время системой, а сколько доступно для запуска новых приложений? Для этого есть в linux утилита free.
Описание утилиты free
Linux утилита free показывает свободную и занятую память в системе. Данные получаются путем разбора /proc/meminfo.
При запуске без ключей Linux утилита free выведет на экран следующие данные:
Вывод содержит данные о физической памяти Mem и файле подкачки Swap. В столбцах указаны следующие параметры:
total – всего установленной памяти
used – использовано памяти (рассчитывается как total – free – buffers – cache)
free – свободно памяти
shared – разделенная память, используемая (в основном) tmpfs
buff/cache – память, используемая буферами ядра и кэшем страниц
available – доступно памяти для запуска новых приложений (без учета swap)
По умолчанию все значения перечисленных параметров указываются в кибибайтах (2 в степени 10 = 1024).
Linux утилита free: формат вывода
Для изменения формата вывода linux утилита free может принимать следующие ключи:
-b, –bytes – значения параметров памяти указываются в байтах
-k, –kibi – значения параметров памяти указываются в кибибайтах (используется по умолчанию)
-m, –mebi – значения параметров памяти указываются в мебибайтах
-g, –gibi – значения параметров памяти указываются в гибибайтах
–tebi – значения параметров памяти указываются в тебибайтах
–pebi– значения параметров памяти указываются в пебибайтах
Аналогично, имеются опции –kilo, –mega, –giga, –tera, –peta. Однако, в отличии от описанных выше, которые при преобразовании используется множитель 1024, в данных ключах это множитель будет равен 1000.
–si – использует kilo, mega, giga и т.д. (множитель 1000) вместо kibi, mebi, gibi (множитель 1024).
-h, –human – значения памяти выводятся в удобном для человека представлении. Утилита автоматически подберет наиболее подходящий префикс (B, K, M, G, T, P с множителем 1024):
-w, –wide – переключение вывода в расширенный режим, который обеспечивает вывод более 80 символов в строке. В данном режиме параметры buffers и cache разделены на 2 колонки:
-l, –lohi – дополнительно выводит статистику по самым низким и высоким значениям:
-t, –total – дополнительно выводит данные по общему значению всей памяти (Mem + Swap):
-s, –seconds delay – постоянно обновлять данные с задержкой, указанной в секундах. Допускается использование микросекунд после точки. Например, установим обновление данных в 2.5 секунды:
Каждые 2.5 секунды на экране будет появляется новый вывод команды free с обновленными данными. Чтобы остановить выполнение команды нажмите Ctrl + C.
-c, –count count – выводить новые данные определенное число раз. Требуется указание параметра -s с временем задержки (если ключ опущен, будет использовано стандартное значение – 1 секунда).
Посмотрим изменение используемой памяти с разницей в 60 секунд:
При этом, после 60 секунд и второго вывода утилита free автоматически закончит свою работу.
-V, –version – посмотреть текущую версию утилиты free:
–help – вывод краткой помощи по использованию утилиты:
Ещё больше полезных Linux-утилит вы можете найти на данной странице.
Команда Free (свободная оперативная память) в Linux
Free Command in Linux
Сколько свободной оперативной памяти мне доступно в моей системе Linux? Достаточно ли свободной памяти для установки и запуска новых приложений?
В системах Linux вы можете использовать free команду для получения подробного отчета об использовании памяти системой.
Команда free предоставляет информацию об общем объеме физической и подкачки памяти, а также о свободной и используемой памяти и пространстве подкачки в системе.
Как использовать Free команду
Синтаксис free команды следующий:
При использовании без какой-либо опции, free команда отобразит информацию о памяти и поменяет местами в кибибайтах. 1 кибибайт (КиБ) составляет 1024 байта.
Вывод будет включать три строки, заголовок, одну строку для памяти и одну для подкачки:
В старых версиях Linux выходные данные могут немного отличаться.
Отображение использования памяти в удобочитаемом формате
Отображение использования памяти в других метриках
Команда free также позволяет указать единицу измерения памяти. Допустимые варианты:
Например, чтобы показать вывод в мегабайтах, вы должны набрать:
Отображение итогов в столбце
Постоянно печатать вывод
Например, чтобы печатать информацию о памяти каждые пять секунд, вы должны выполнить:
Вывод
К настоящему времени вы должны хорошо понимать, как использовать и интерпретировать free команду. Для просмотра всех доступных параметров free командной строки введите man free в своем терминале.
Linux: утилита free и очистка кеша памяти
Утилита free – один из основных инструментов администратора, позволяющая отобразить статистику используемой и свободной памяти сервера.
Информацию free получает из файла /proc/meminfo – динамически изменяющего в процессе работы системы.
О разделе proc и файловой системе procfs более подробно можно почитать в статье Linux: описание и назначение файловой системы proc и каталога /proc.
Рассмотрим информацию, которую выводит free :
Будучи запущенной без ключей – она отобразит статистику в килобайтах.
Для вывода информации в других единицах – используются ключи:
-b – в байтах;
-m – мегабайтах;
-g – гигабайтах.
Например – обновлять каждые 5 секунд:
Mem – физическая память;
Swap – виртуальная память, или Paging.
total – общее количество памяти;
used – реально использующая в данный момент и зарезервированная системой память;
free – свободная память ( total минус used );
shared – Shared memory или Разделяемая память, можно посмотреть командой ipcs ;
buffers – буферы в памяти – страницы памяти, зарезервированные системой для выделения их процессам, когда они затребуют этого, так же известна как heap-memory;
cached – файлы, которые недавно были использованы системой/процессами и хранящиеся в памяти на случай если вскоре они снова потребуются.
Тут used = 4745 megabytes. Общее количество buffers и cached памяти – 3331 мегабайт. Итого, реально занятая процессами и системой память – лишь
1413 (1 мегабайт “потерялся” из-за подсчёта в мегабайтах, а не байтах/килобайтах).
Аналогично подсчитывается и реально свободная память, только buffers и cached добавляются к ней (так как на самом деле – это не занятые страницы):
Что бы отобразить реально свободную память одной командой – можно воспользоваться такой командой:
Как очистить кеш памяти в Linux?
Можно выполнить такую команду:
Увы, показать насколько реально можно освободить таким образом памяти не получится, т.к. машина совсем не нагружена. Тем не менее – разница видна:
Однако, смысл выполнять такую очистку есть лишь в случае реальных проблем с памятью.
Для FreeBSD есть аналогичная утилита freecolor :
UPD Нагуглил ссылку на этот пост, в треде>>> есть еще пример:
Разбираем команду free: что должен знать администратор Linux
Для тех, кто не использует или не любит дистрибутивы Linux семейства RHEL, следует ориентироваться на версии ядра. В случае, когда мы говорим RHEL 6, то имеется в виду ядро 2.6.32 и ниже. Если говорим о RHEL 7/8, то 3.10 и выше.
Отвечая на вопрос «зачем». Как оказалось, у многих даже давно занимающихся администрированием Linux знания об использовании данной команды остались на уровне времён ядер 2.6.32. В то время как в новых ядрах, очень многие фичи были или инвертированы или же сильно изменены. И многие люди про это не в курсе.
Оригинал статьи лежит здесь. На случай, если кто-то мой перевод сочтёт негодным. 🙂
Разбираем команду free: что должен знать администратор Linux
Команда free популярна среди системных администраторов Unix/Linux. Это серьёзный инструмент, дающий полное представление об использовании памяти в ясном для человека виде.
В man странице про данную команду сказано, что free отображает общее количество свободной и используемой памяти в системе, включая пространство подкачки и физической памяти, а также буферы с кешами используемые ядром операционной системы. Данная информация собирается путём разбора содержимого /proc/meminfo.
Как и другие команды, free прошла через череду изменений на протяжении своего существования, дабы вывод её был осмысленным и точным, что требуется для дальнейшего принятия решений. В RHEL 6 вывод утилиты free ощутимо отличается от вывода такового на RHEL 7 или 8. Впрочем, ключевые параметры остаются неизменными в любой версии.
В RHEL 7/8 вывод выглядит иначе:
В то же время, в RHEL 8 всё будет выглядеть следующим образом:
Различные столбцы, показанные в разных версиях выше, указывают на общую доступную память (total), использованную (used), свободную (free), разделяемую (shared) память. Помимо этого, в выводе отображается память, расположенная в данных момент в буферах и кешах операционной системы.
Впрочем, как и в случае с большинством других команд, необходимые для устранения проблем или выполнении служебных обязанностей системному администратору столбцы вывода команды будут рассмотрены далее.
Red Hat Enterprise Linux 6
В случае с RHEL 6, сфокусироваться следует на столбцах -/+ buffers/cache. На рис. 1 выше мы видим, что общее количество памяти равно 94 гигабайтам, где израсходовано 44 гигабайта и свободно 49 гигабайт. Вообще, это довольно нагруженная система и потребление памяти в ней выглядит высоким. Волноваться не стоит, хотя всё же следует посмотреть на столбец в -/+ buffers/cache. Данное значение показывает занятые 42 гигабайта и свободные 52 Гб. Это означает, что в реальности используется всего 42 гигабайта, а не 44. Значение задействованных 44 гигабайт включает себя ещё и кеши. Заметьте, даже простой взгляд на значение колонки used без учёта значения занятых кешей уже влияет на интерпретацию оценки производительности системы.
Теперь разберём смысл колонок со значениями буферов и кешей:
· buffers: память задействованная буферами ядра
· cached: память занятая “Page Cache” (страничным кешем).
Страничный кеш — не что иное, как данные / файлы, копируемые в оперативную память, в момент когда ядро операционной системы выполняет операции чтения или записи на диске. Причина тому — производительность операций ввода-вывода. Таким образом, ядро держит эти файлы в ОЗУ и высвобождает их в тот момент, когда они не требуются или когда пространство памяти запрашивается какой-либо командой или процессом в случае отсутствия свободной памяти в системе.
Red Hat Enterprise Linux 7/8
В операционных системах RHEL 7/8 уже следует сместить фокус на колонку available, поскольку колонка -/+ buffers/cache была удалена и заменена столбцом available. В то же время, столбцы buffers и cache были объединены в единое значение buff/cache и имеют ровно тот же смысл, что и ранее. Столбец available показывает оценку сколько памяти доступно приложениям без использования подкачки.
Так когда сисадмину всё же следует начать беспокоиться?
Исправна та система, которая показывает максимально возможный объём памяти достаточный для выполнения каких-либо задач, при этом демонстрирующая следующие ожидаемые признаки нормальной работы:
Однако, системному администратору стоит начать беспокоиться, когда появляются следующие признаки реальной нехватки памяти:
Подведение итогов
Команда free — полезный инструмент, которая может очень рассказать системному администратору о том, что происходит в системе. Знание о различиях в выводе free может помочь в более точной интерпретации выдаваемых данных.
Команда free в linux
Команда free позволяет вызывать одноименную утилиту, осуществляющую вывод информации об использовании оперативной памяти. Данная команда позволяет ознакомиться с информацией об использовании как физической памяти (RAM — Random Access Memory), представленной модулями с набором чипов в специальных слотах на материнской плате компьютера, так и памяти из раздела или файла подкачки подкачки (SWAP), расположенного на жестком диске или твердотельном накопителе. Вся выводимая с помощью команды информация с значительным набором дополнительных данных доступна из файла /proc/meminfo.
Базовый синтаксис команды выглядит следующим образом:
Наиболее важными параметрами являются параметр -t, позволяющий выводить информацию об общем количестве использованной памяти в отдельной строке, параметр -s, позволяющий обновлять вывод через заданный промежуток времени в секундах, параметр -c, позволяющий ограничить количество обновлений вывода заданным значением, параметр -l, позволяющий выводить информацию о нижней и верхней памяти, параметр -h, позволяющий выводить информацию в удобном для чтения человеком формате, а также параметры —bytes, —kilo, —mega, —giga, —tera, —peta, позволяющие выводить числовые значения в соответствующих единицах, а именно, байтах, килобайтах (утилита работает в данном режиме по умолчанию), мегабайтах, гигабайтах, терабайтах и петабайтах соответственно. Кроме того, существуют параметры —kibi, —mebi, —gibi, —tebi, —pebi, позволяющие выводить числовые значения в кибибайтах, мебибайтах, гибибайтах, тебибайтах и пебибайтах.
Примеры использования
Получение информации об использовании оперативной памяти
Команда free может использоваться для получения информации об использовании оперативной памяти в любое время. По умолчанию все значения в килобайтах:
$ free
всего занято свободно общая буф./врем. доступно
Память: 2037684 1612460 197732 20768 227492 249148
Подкачка: 2098172 1123916 974256
Очевидно, что на данном компьютере активно используется раздел подкачки, что негативно отражается на его производительности.
Вывод с использованием значений в мегабайтах, на мой взгляд, более удобный:
А это удобный для чтения человеком формат с единицами измерения:
В большинстве случаев затраты оперативной памяти можно оценить, не используя каких-либо параметров.
Отслеживание состояния оперативной памяти
Для отслеживания состояния оперативной памяти следует использовать команду free с параметром -s и значением длительности периода перед обновлением информации в секундах:
всего занято свободно общая буф./врем. доступно
Память: 2037684 1622484 102500 18544 312700 241732
Подкачка: 2098172 1112164 986008
всего занято свободно общая буф./врем. доступно
Память: 2037684 1622484 102500 18544 312700 241732
Подкачка: 2098172 1112164 986008
всего занято свободно общая буф./врем. доступно
Память: 2037684 1622468 102500 18544 312716 241748
Подкачка: 2098172 1112164 986008
Очевидно, что теперь утилита периодически выводит информацию о состоянии оперативной памяти. В этом случае работа утилиты завершается с помощью комбинации клавиш CTRL+C.

