← Назад к вопросам

Как посмотреть потребление памяти в Linux

2.2 Middle🔥 151 комментариев
#Инструменты тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Анализ потребления памяти в Linux

В Linux управление памятью — комплексная задача, а анализ её потребления требует понимания, какие процессы и ресурсы используют оперативную память (RAM), своп (swap) и кэши. Вот основные инструменты и методы для мониторинга.

Утилиты командной строки

1. free — общая статистика памяти

Наиболее быстрый способ получить сводную информацию.

free -h
  • -h — human-readable (вывод в гигабайтах/мегабайтах).
  • Ключевые метрики:
    • total — общий объём ОЗУ.
    • used — память, используемая процессами и кэшами.
    • free — полностью свободная память.
    • available — оценка памяти, доступной для новых процессов без свопа (важнейший показатель!).
    • buff/cache — память, использованная ядром для буферов и кэша (может быть освобождена при необходимости).

Пример вывода:

              total        used        free      shared  buff/cache   available
Mem:           7.7Gi       2.1Gi       3.2Gi       123Mi       2.4Gi       5.2Gi
Swap:          2.0Gi       0.0Ki       2.0Gi

2. top и htop — интерактивный мониторинг процессов

top показывает динамическую информацию о процессах и памяти.

  • В заголовке — сводка по памяти (аналогично free).
  • В таблице процессов колонка %MEM — доля физической памяти, используемая каждым процессом.
  • htop — улучшенная версия с цветным выводом и удобной навигацией.
top
# или
htop

3. vmstat — статистика виртуальной памяти

Показывает детальную статистику по памяти, свопу, вводу/выводу и процессору.

vmstat -s
  • -s — вывод в виде сводной таблицы.
  • Полезно для анализа swapping (si/so) в реальном времени:
vmstat 1 5  # 5 отсчётов с интервалом 1 секунда

4. /proc/meminfo — детальная информация от ядра

Источник сырых данных для всех утилит. Содержит десятки метрик.

cat /proc/meminfo
  • Ключевые поля:
    • MemTotal, MemFree, MemAvailable.
    • Cached, Buffers, SwapCached.
    • Active/Inactive — память, активно используемая/недавно освобождённая.

Углублённый анализ per-process памяти

ps для анализа памяти конкретного процесса

ps aux --sort=-%mem | head -10  # Топ-10 процессов по потреблению памяти
  • Колонки:
    • RSS (Resident Set Size) — физическая память, занимаемая процессом (в KiB).
    • VSZ (Virtual Memory Size) — общий объём виртуальной памяти.

smem — продвинутый анализ с учётом shared memory

Покажает PSS (Proportional Set Size) — более точный показатель, учитывающий разделяемую память.

smem -r -p  # Сортировка по RSS, вывод в процентах

Мониторинг в реальном времени и дашборды

  • glances — всесторонний мониторинг (память, CPU, диск, сеть).
  • nmon — интерактивный монитор с возможностью записи сессий.
  • Grafana + Prometheus — для исторического анализа и алертинга.

Ключевые выводы для интерпретации

  • Не путать free и available — современные Linux активно используют память для кэширования дисковых операций (buff/cache), что ускоряет работу. Эта память освобождается при запросе от приложений.
  • Высокое использование свопа (swap) — признак нехватки RAM, приводит к значительным замедлениям.
  • Memory leak диагностика — отслеживайте стабильный рост RSS конкретного процесса во времени.
  • Контейнеры и виртуализация — в Docker/Kubernetes используйте docker stats или kubectl top pods.

Пример скрипта для быстрой диагностики

Создайте файл mem_check.sh:

#!/bin/bash
echo "=== Общая статистика памяти ==="
free -h
echo ""
echo "=== Топ-5 процессов по памяти ==="
ps aux --sort=-%mem | head -6
echo ""
echo "=== Статистика свопа ==="
swapon --show

Сделайте исполняемым и запустите:

chmod +x mem_check.sh
./mem_check.sh

Таким образом, в арсенале инженера есть инструменты от быстрых однострочников (free, top) до комплексных мониторинговых решений. Критически важно интерпретировать метрики в контексте доступной памяти (available) и поведения конкретных приложений, особенно в production-среде под нагрузкой.