Sobes.tech
Back to questions
Middle
11

Как top считает CPU%? По какому алгоритму?

Companies where asked
OZONOZON

Answer from AI

sobes.tech AI

Команда top в Linux показывает процент использования CPU для каждого процесса, вычисляя его на основе времени, которое процесс провёл в состоянии выполнения (CPU time) за определённый интервал.

Алгоритм примерно такой:

  1. top периодически (обычно раз в секунду) считывает статистику процессов из /proc/[pid]/stat.
  2. Для каждого процесса берётся суммарное время, проведённое на CPU (user + system), и сравнивается с предыдущим замером.
  3. Разница во времени CPU процесса делится на разницу во времени между замерами (обычно 1 секунда), что даёт долю использования CPU процессом за этот интервал.
  4. Результат нормируется на количество доступных CPU, если нужно.

Формула упрощённо:

CPU% = (delta_process_cpu_time / delta_time) * 100

Где delta_process_cpu_time — изменение времени CPU процесса между двумя замерами, а delta_time — время между замерами (обычно 1 секунда).

Таким образом, если процесс использовал CPU всё время между замерами, CPU% будет близок к 100% на одном ядре. Если система многоядерная, максимальное значение может быть выше 100%, если процесс использует несколько ядер одновременно.