Что означает 200% загрузки процесса в top в Linux?

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

Ответ

В утилите top загрузка CPU для процесса, равная 200%, означает, что процесс использует эквивалент двух полных ядер (или CPU-потоков) процессора на 100%.

Объяснение: В Linux top по умолчанию показывает использование CPU в процентах от одного ядра. Поэтому:

  • 100% = одно ядро загружено полностью.
  • 200% = два ядра загружены полностью.
  • 400% на 4-ядерном CPU = все ядра загружены на 100%.

Пример из практики: У вас есть сервер с 8 логическими ядрами (например, 4 ядра с Hyper-Threading). Вы запускаете приложение, которое интенсивно использует многопоточность (например, компиляцию с make -j4 или обработку данных). В top вы можете увидеть:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 4567 appuser   20   0   12.3g   2.1g   123m R  350.0  13.2  10:45.67 java

Здесь процесс Java использует ~3.5 ядра.

Как анализировать такую нагрузку (DevOps-инструменты):

  1. Более наглядная альтернатива top:
    htop  # Цветной вывод, показывает загрузку по ядрам в виде полосок.
  2. Детальный анализ конкретного процесса:
    # Показать потоки процесса и их загрузку
    top -H -p <PID>
    # Или
    ps -L -o pid,tid,pcpu,psr,comm -p <PID>

    Ключевые столбцы: psr (номер ядра, на котором работает поток), pcpu (загрузка потока).

  3. Поиск самых "прожорливых" процессов:
    ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -20

Когда это нормально, а когда — проблема:

  • Нормально: Для легитимных вычислительных задач (рендеринг, компиляция, обработка больших данных, нагрузочное тестирование).
  • Проблема (требует investigation): Если процесс с высокой загрузкой — это, например, базовая служба в idle-режиме, или нагрузка приводит к общему лавинообразному замедлению системы (high load average). В этом случае нужно профилировать приложение (perf, flame graphs) или проверять на предмет утечек (бесконечные циклы).