Высокая загрузка CPU из-за слишком большого количества потоков
Увеличение числа потоков не всегда означает, что будет выполнено больше работы. После определённого момента это только ухудшает ситуацию.
Common symptoms
- Загрузка CPU растёт, но пропускная способность не увеличивается
- Добавление воркеров увеличивает задержку
- Резко растёт число переключений контекста
Likely causes
- Слишком большие пулы потоков
- Неограниченное создание воркеров
- Общее состояние с высокой долей блокировок
Evidence to look for
Число переключений контекста аномально высокое
Количество потоков превышает число доступных ядер
Растёт задержка в очереди выполнения
What it usually means
Система тратит больше времени на переключение между потоками, чем на выполнение полезной работы.
What to do next
- 1Уменьшите число потоков и измерьте снова
- 2Снизьте конкуренцию при доступе к общему состоянию
- 3По возможности используйте асинхронные или событийно-ориентированные подходы
See what's causing your CPU
cpum.ai turns CPU, process, disk, and memory signals into plain-English explanations with evidence.
Open cpum.ai