Что означают основные показатели процессов в команде top в Linux?

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

Ответ

В выводе top каждый процесс отображается с набором ключевых метрик, которые я использую для диагностики проблем с производительностью и ресурсами:

Основные колонки:

  • PID – уникальный идентификатор процесса. Используется для отправки сигналов (kill -9 PID) или более детального анализа (strace -p PID).
  • USER – владелец процесса. Помогает идентифицировать, от чьего имени запущена проблемная служба.
  • PR (Priority) & NI (Nice) – приоритет планировщика. NI (от -20 до 19) влияет на PR. Отрицательное NI дает процессу больше CPU. Я настраиваю nice для фоновых задач, чтобы не мешать критичным процессам.
  • VIRT, RES, SHR – метрики использования памяти.
    • VIRT – вся виртуальная память (код, данные, shared libs, swap). Может быть сильно завышен.
    • RES – резидентная память в RAM. Это реальное физическое потребление, на которое я смотрю в первую очередь при подозрении на утечку.
    • SHR – разделяемая память (например, общие библиотеки glibc). Экономит RAM, если несколько процессов используют одну библиотеку.
  • %CPU – процент использования процессорного времени за последний цикл обновления. Значение >100% указывает на использование нескольких ядер.
  • %MEM – процент от общей физической RAM, используемой процессом (RES / total RAM).
  • TIME+ – совокупное время CPU, затраченное процессом с момента запуска. Помогает найти "прожорливые" долгоиграющие процессы.

Пример анализа: Если я вижу процесс с высоким %CPU и растущим RES, это может указывать на неоптимальный алгоритм или утечку памяти. Процесс с высоким VIRT, но низким RES обычно не является проблемой для RAM.