%CPU utilization is a lie
%CPU — обманка
Система показывает 50 % загрузки, но реально сервер выполняет 60–100 % максимально возможной работы.
Эксперимент
Ryzen 9 5900X (12 ядер / 24 потока), Turbo включён.
Скрипт запускал stress-ng
двумя способами:
- 24 потока по 1–100 % нагрузки;
- 1–24 потока по 100 %.
Результаты
- Общий CPU-тест: при 50 % «утилитой» реальная работа 60–65 %.
- 64-битная математика: 65–85 %.
- Умножение матриц: 80–100 %.
Почему так
- Hyper-threading: после 12 потоков «ядра» делят ресурсы, прирост стремится к нулю.
- Turbo: частота падает с 4.9 до 4.3 ГГц при росте загрузки, поэтому «утил» растёт быстрее реальной работы.
Вывод
Полагаться на линейный рост %CPU — ошибка. При эффективной загрузке (>50 %) показания занижены, и различия между процессорами могут быть огромными.