Ответ
В утилите 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-инструменты):
- Более наглядная альтернатива
top:htop # Цветной вывод, показывает загрузку по ядрам в виде полосок. - Детальный анализ конкретного процесса:
# Показать потоки процесса и их загрузку top -H -p <PID> # Или ps -L -o pid,tid,pcpu,psr,comm -p <PID>Ключевые столбцы:
psr(номер ядра, на котором работает поток),pcpu(загрузка потока). - Поиск самых "прожорливых" процессов:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -20
Когда это нормально, а когда — проблема:
- Нормально: Для легитимных вычислительных задач (рендеринг, компиляция, обработка больших данных, нагрузочное тестирование).
- Проблема (требует investigation): Если процесс с высокой загрузкой — это, например, базовая служба в idle-режиме, или нагрузка приводит к общему лавинообразному замедлению системы (high load average). В этом случае нужно профилировать приложение (perf, flame graphs) или проверять на предмет утечек (бесконечные циклы).