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

«Как узнать потребление памяти в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мониторинг памяти в Linux требует понимания разницы между разными типами памяти (RAM, swap, cache). Вот мои основные инструменты:

1. Быстрый обзор (free):

free -h

Ключевые метрики:

  • total: Общий объем ОЗУ.
  • used: Память, используемая процессами и кэшем.
  • available: Память, доступная для запуска новых процессов без использования swap. Это более точный показатель, чем free.

2. Динамический мониторинг процессов:

  • top (встроен везде): Запускаю и смотрю на строки Mem и Swap, а также колонку %MEM для процессов.
  • htop (удобнее): Если установлен, использую его для интерактивного просмотра и сортировки.

3. Детальная диагностика:

  • Чтобы увидеть топ-10 процессов по потреблению памяти:
    ps aux --sort=-%mem | head -10
  • Для просмотра статистики памяти и свопа:
    vmstat -s

4. Для скриптов и автоматизации я пишу команды, которые извлекают конкретные значения. Например, для получения доступной памяти в МБ:

available_mem=$(free -m | awk '/^Mem:/ {print $7}')
echo "Available memory: ${available_mem}MB"

В продакшн-среде я полагаюсь на системы мониторинга (Prometheus/Grafana), которые собирают метрики от node_exporter и строят графики использования памяти, давления на память (memory pressure) и активности подкачки (swap).