Назад к вопросам
OZON
Middle
12
Как top считает CPU%? По какому алгоритму?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Команда top в Linux показывает процент использования CPU для каждого процесса, вычисляя его на основе времени, которое процесс провёл в состоянии выполнения (CPU time) за определённый интервал.
Алгоритм примерно такой:
topпериодически (обычно раз в секунду) считывает статистику процессов из/proc/[pid]/stat.- Для каждого процесса берётся суммарное время, проведённое на CPU (user + system), и сравнивается с предыдущим замером.
- Разница во времени CPU процесса делится на разницу во времени между замерами (обычно 1 секунда), что даёт долю использования CPU процессом за этот интервал.
- Результат нормируется на количество доступных CPU, если нужно.
Формула упрощённо:
CPU% = (delta_process_cpu_time / delta_time) * 100
Где delta_process_cpu_time — изменение времени CPU процесса между двумя замерами, а delta_time — время между замерами (обычно 1 секунда).
Таким образом, если процесс использовал CPU всё время между замерами, CPU% будет близок к 100% на одном ядре. Если система многоядерная, максимальное значение может быть выше 100%, если процесс использует несколько ядер одновременно.