Как посмотреть потребление памяти в Linux
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Анализ потребления памяти в 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-среде под нагрузкой.