Введение
При оценке производительности или расследовании инцидентов с нехваткой ресурсов в среде Ubuntu и других дистрибутивах Linux системные инженеры в первую очередь обращаются к стандартной утилите free. В этом руководстве мы подробно разберем практические приемы работы с данной командой: от выбора оптимальных единиц представления данных до глубокого анализа метрик available, buffers и cached, а также рассмотрим методы динамического наблюдения за расходом RAM.
1. Базовый опрос подсистемы памяти и форматирование единиц измерения (-h, -m, -g)
Команда free служит быстрым инструментом для мгновенного среза состояния как физического ОЗУ (RAM), так и раздела подкачки (Swap). По умолчанию вывод формируется в кибибайтах (KiB), что часто затрудняет визуальную оценку на серверах с большими объемами памяти.
⚙️ [Ключевые ключи запуска]
-b : Отображение показателей строго в байтах (Byte).-k : Вывод данных в кибибайтах (KiB), что является стандартным поведением утилиты.-m : Масштабирование всех значений до мебибайтов (MiB).-g : Представление объемов в гибибайтах (GiB).--mega : Переключение на десятичную шкалу измерения (1 МБ = 1 000 000 байт).--giga : Расчет в десятичных гигабайтах (1 ГБ = 1 000 000 000 байт).-h : Режим вывода, адаптированный для восприятия человеком (автоматический подбор B, Ki, Mi, Gi, Ti).-w : Расширенный формат (wide mode), разделяющий буферы и дисковый кэш по отдельным столбцам.-c [횟수] : Ограничение количества последовательных итераций опроса заданным числом.-s [초] : Интервал задержки между обновлениями экрана в секундах.-t : Добавление результирующей строки с суммарными показателями RAM и Swap.

Флаг -h включает режим удобочитаемости (human-readable), при котором утилита автоматически подбирает наиболее подходящие префиксы (GiB, MiB, KiB). Именно эта форма вызова наиболее популярна при интерактивной работе администратора в консоли, так как позволяет мгновенно оценить порядок цифр без мысленного перевода степеней двойки.

Если требуется строгая нормализация данных, ключ -m приводит все значения к единому знаменателю — мебибайтам (MiB). Отсутствие суффиксов и чисто числовой формат идеальны для последующего парсинга через awk или в сценариях Bash, где важна детерминированность вывода.

2. Разбор метрик: почему free обманчив, что показывает available и зачем разделять buff/cache
Стандартная сводка free -h разделена на несколько функциональных столбцов, понимание которых критично для правильной интерпретации ситуации.
Значение в графе free отражает только физически незадействованные страницы памяти, к которым система вообще не прикасалась.
В противовес этому, параметр available представляет собой расчетную оценку объема, который ядро способно немедленно выделить новым или существующим приложениям без сброса страниц в своп, высвободив дисковые буферы и страничные кэши.
Именно поэтому реальный резерв оперативной памяти в Linux всегда оценивается по показателю available, а низкое значение free само по себе не свидетельствует о дефиците ресурсов.

Задействовав параметр -w в комбинации free -h -w, мы разносим объединенную категорию buff/cache на самостоятельные метрики buffers и cache.
Поле buffers соответствует блочной буферизации ввода-вывода и хранению метаданных файловой структуры, используемых ядром.
Секция cache отведена под кэширование страниц (page cache) — содержимое файлов, ранее прочитанных с накопителей, удерживается в ОЗУ для минимизации задержек при повторных обращениях.
Оба эти сегмента не блокируют систему: при возникновении потребности со стороны прикладных процессов ядро мгновенно сбрасывает кэшируемые данные и отдает память под полезную нагрузку.

Для верификации первоисточника информации можно обратиться напрямую к псевдофайловой системе ядра с помощью команды head -n 10 /proc/meminfo.
Утилита free фактически является интерфейсом над файлом /proc/meminfo, извлекая и агрегируя такие счетчики, как MemTotal, MemFree, MemAvailable, Buffers и Cached.
Прямой просмотр этого файла полезен при аудите низкоуровневых параметров подсистемы виртуальной памяти и отладке нестандартного поведения ядра.

3. Мониторинг динамики потребления ресурсов и итоговые показатели (-s, -c, -t)
Использование комбинации free -h -t добавляет в нижнюю часть отчета дополнительную строку Total, суммирующую физическую память (Mem) и виртуальное пространство подкачки (Swap).
Такой подход дает комплексное представление об общем адресном пространстве сервера и совокупном потреблении памяти всеми подсистемами.

С помощью конструкции free -h -s 2 -c 3 настраивается периодический опрос: утилита обновляет данные каждые две секунды (-s 2) и завершает работу ровно после трех циклов (-c 3).
Данная опция удобна для оперативного отслеживания кратковременных всплесков потребления ресурсов при старте тяжелых сервисов без необходимости запуска громоздких систем мониторинга.

4. Практический стресс-тест: наблюдение за поведением ОЗУ под нагрузкой
Чтобы наглядно зафиксировать перераспределение памяти в реальном времени, подготовим тестовую нагрузку с помощью утилиты stress.

Перед созданием искусственной нагрузки зафиксируем базовые показатели системы командой free -h.
На исходном снимке объем занятой памяти (used) составляет 5.2GiB, абсолютно свободной (free) — 1.2GiB, а расчетный объем доступного ресурса (available) равен 2.0GiB, что говорит о достаточном запасе производительности.

Запустим команду stress --vm 1 --vm-bytes 256M --timeout 5s, которая инициализирует один рабочий поток, циклически выделяющий и освобождающий блок памяти размером 256 МБ на протяжении 5 секунд.
Этот процесс формирует кратковременное контролируемое давление на подсистему оперативной памяти.

Повторный вызов free -h непосредственно в процессе тестирования демонстрирует отклик ядра на возросшие аппетиты процесса:
Значение used поднялось с 5.2GiB до 5.3GiB, нетронутый запас free просел с 1.2GiB до 1.0GiB, а итоговый показатель available снизился с 2.0GiB до 1.9GiB. Это наглядно иллюстрирует оперативную аллокацию страниц под исполняемую задачу.

Мы рассмотрели практические тонкости использования утилиты free для диагностики состояния оперативной памяти в Linux, выяснили принципиальное отличие free от available и разобрали структуру кэширования.
Грамотное понимание этих метрик и регулярное применение рассмотренных ключей позволят вам оперативно и безошибочно выявлять узкие места в инфраструктуре серверов.