Как понять, что процесс потребляет много ОЗУ в Linux

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

Ответ

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

1. Использование top и htop В top можно отсортировать процессы по использованию памяти, нажав Shift+M. Для автоматической сортировки при запуске:

top -o %MEM

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

2. Анализ с помощью ps Чтобы быстро получить список самых "прожорливых" процессов:

ps aux --sort=-%mem | head -n 10

Эта команда показывает PID, пользователя, %CPU, %MEM и команду для топ-10 процессов по использованию памяти.

3. Проверка общей статистики Команда free показывает общее использование памяти и свопа:

free -h

Ключевые метрики: доступная память (available) и использование свопа (swap used).

4. Детальная диагностика Для глубокого анализа можно использовать:

  • vmstat -s – детальная статистика по памяти.
  • pmap -x <PID> – карта памяти конкретного процесса.
  • cat /proc/<PID>/status | grep Vm – детали по использованию памяти процессом.

Критические признаки высокой нагрузки:

  • Высокий %MEM в top (например, >30% для критичного сервиса).
  • Активное использование свопа (si/so в vmstat) – это указывает на нехватку ОЗУ.
  • Сообщения OOM Killer в логах – ядра начинает "убивать" процессы.
    dmesg | grep -i "killed process"
  • Падение производительности – система начинает активно использовать дисковый своп, что резко замедляет работу.