Linux

Мониторинг использования памяти в Linux: полное руководство

Это руководство познакомит вас с основными и продвинутыми методами мониторинга памяти в Linux. Вы научитесь использовать команды free, top, vmstat и другие, чтобы контролировать потребление ресурсов и оперативно реагировать на нехватку памяти.

Обновлено 15 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+Fedora 35+

Введение / Зачем это нужно

Постоянный мониторинг использования оперативной памяти (RAM) — критически важная задача для администраторов Linux и разработчиков, развертывающих приложения. Неконтролируемое потребление памяти может привести к замедлению системы, активному использованию swap-раздела и в худшем случае — к краху процессов (OOM Killer). Этот гайд поможет вам освоить набор встроенных и сторонних инструментов для быстрой оценки состояния памяти, выявления "прожорливых" процессов и принятия обоснованных решений по оптимизации.

Требования / Подготовка

Перед началом убедитесь, что:

  • У вас есть доступ к терминалу Linux (через SSH или локально).
  • Вы обладаете правами для выполнения команд (обычно достаточно обычного пользователя, но для установки дополнительных пакетов потребуются права sudo).
  • Большинство инструментов (free, top, vmstat, /proc/meminfo) уже предустановлены в любом дистрибутиве Linux.
  • Для установки htop, nmon или glances потребуется менеджер пакетов (apt, yum, dnf).

Шаг 1: Использование команды free

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

free -h

Ключ -h (human-readable) выводит значения в удобных единицах (МБ, ГБ). Пример вывода:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        156M        2.4G        5.1G
Swap:          2.0G          0B        2.0G

Обратите внимание на столбцы:

  • used: память, используемая процессами (без учета кэшей).
  • free: полностью неиспользуемая память.
  • buff/cache: память, занятая буферизацией и кэшированием (ядро может освободить её при необходимости).
  • available: оценка памяти, доступной для запуска новых процессов без swap. Это самый важный показатель.

Шаг 2: Интерактивный мониторинг с top и htop

Для наблюдения за динамикой и выявления процессов, потребляющих много памяти, используйте top или более удобную альтернативу htop.

Использование top

Запустите:

top

По умолчанию top сортирует по загрузке CPU. Чтобы сортировать по памяти, нажмите F (или f), затем выберите столбец %MEM (или RES для физической памяти) и нажмите s для сохранения. Для выхода нажмите q.

Установка и использование htop

htop предоставляет цветное интерфейс с удобным управлением:

# Для Ubuntu/Debian:
sudo apt update && sudo apt install htop

# Для CentOS/RHEL/Fedora:
sudo yum install htop   # или sudo dnf install htop

Запустите htop. Память отображается в виде цветных полос вверху (синий — used, зеленый — buff/cache). Для сортировки по памяти нажмите F6 и выберите PERCENT_CPU или RES, или просто кликните на заголовок столбца (если мышь поддерживается). Процессы, которые используют больше всего памяти, будут наверху.

Шаг 3: Статистика виртуальной памяти с vmstat

vmstat дает общую статистику по системе, включая память, swap и операции ввода-вывода.

vmstat -s

Вывод покажет детализированные цифры, например:

  8192000 K total memory
  2150400 K used memory
  3901440 K active memory
  1324544 K inactive memory
  3176448 K free memory
   123456 K buffer memory
  2048000 K swap cache
  2097152 K total swap
        0 K used swap
  2097152 K free swap

Для непрерывного мониторинга с интервалом в 2 секунды:

vmstat 2

Обращайте внимание на столбцы si (swap in) и so (swap out). Если они постоянно отличны от нуля, это признак нехватки оперативной памяти.

Шаг 4: Детальная информация из /proc/meminfo

Файл /proc/meminfo содержит наиболее подробные и низкоуровневые данные о памяти. Это текстовый файл, который можно читать напрямую:

cat /proc/meminfo

Пример вывода (сокращен):

MemTotal:        8192000 kB
MemFree:         3176448 kB
MemAvailable:    5100000 kB
Buffers:         123456 kB
Cached:          2048000 kB
SwapCached:            0 kB
Active:          3901440 kB
Inactive:        1324544 kB
SwapTotal:      2097152 kB
SwapFree:       2097152 kB

Здесь:

  • MemAvailable — наиболее точная оценка доступной памяти (учитывает кэши и буферы, которые можно быстро освободить).
  • Cached — память, используемая кэшем страниц (для ускорения чтения диска).
  • Buffers — память для буферизации блочных устройств (например, дисков).

Для фильтрации конкретных полей можно использовать grep:

grep -E 'MemTotal|MemFree|MemAvailable|Buffers|Cached' /proc/meminfo

Шаг 5: Расширенные утилиты nmon и glances

Для комплексного мониторинга системы, включая память, CPU, диски и сеть, удобны утилиты nmon и glances.

Установка nmon

# Ubuntu/Debian:
sudo apt install nmon

# CentOS/RHEL:
sudo yum install nmon

Запустите nmon. Нажмите m для переключения на экран памяти. Там вы увидите подробную разбивку по типам памяти, а также графики в реальном времени. Для выхода нажмите q.

Установка glances

glances — кросс-платформенный мониторинг в текстовом режиме с возможностью веб-интерфейса.

# Установка через pip (рекомендуется):
pip3 install glances

# Или через менеджер пакетов (может быть устаревшая версия):
sudo apt install glances   # Ubuntu/Debian

Запустите glances. По умолчанию отображаются все метрики, включая память (вверху слева). Нажмите h для справки по управлению.

Проверка результата

После выполнения шагов вы должны:

  1. Увидеть в выводе free -h или /proc/meminfo актуальные значения памяти. Поле available (или MemAvailable) должно быть разумным (не близким к нулю).
  2. В top/htop убедиться, что нет процессов, постоянно потребляющих больше памяти, чем ожидалось.
  3. При использовании vmstat проверить, что si и so близки к нулю (если swap активен постоянно — это тревожный знак).
  4. В nmon/glances оценить общую картину и тенденции.

Если память заканчивается, вы увидите рост used и падение free/available, а также увеличение активности swap (si, so).

Возможные проблемы

1. Ошибка "command not found" для htop/nmon/glances

Решение: Установите недостающий пакет через менеджер пакетов вашего дистрибутива (см. шаги выше). Убедитесь, что вы используете sudo для установки.

2. Недостаточно прав для просмотра информации о процессах

Решение: Обычно команды free, vmstat, cat /proc/meminfo доступны всем. Но для просмотра всех процессов в top/htop (особенно чужих) может потребоваться запуск с sudo. Однако для общего обзора памяти это не обязательно.

3. Неправильная интерпретация вывода free (путаница с cached/buffers)

Решение: Не ориентируйтесь на free и used в старых версиях free. Всегда смотрите на available (или вычисляйте: free + buffers + cached). Ядро Linux активно использует свободную память для кэширования, что ускоряет систему, и освободит её при необходимости.

4. Высокое использование памяти, но нет процессов-потребителей

Решение: Возможно, память используется ядром (например, для slab-аллокаторов). Проверьте в /proc/meminfo поля Slab, KernelStack. Также может быть утечка в драйвере или модуле ядра. В таком случае поможет перезагрузка или обновление системы.

5. Утилиты показывают разную информацию

Решение: Разные инструменты могут использовать разные единицы измерения (кБ vs. KiB) или по-разному считать кэши. Всегда сверяйтесь с "истинным источником" — /proc/meminfo.

Часто задаваемые вопросы

Как быстро узнать, сколько свободной памяти в Linux?
В чем разница между cached и buffers в выводе free?
Как continuously следить за использованием памяти в реальном времени?
Какая утилита дает наиболее подробную информацию о памяти?

Полезное

Используйте команду free
Мониторьте в реальном времени с top/htop
Примените vmstat для статистики
Изучите /proc/meminfo
Установите расширенные утилиты (опционально)