Ваши темы должны синхронизироваться? Если это так, у вас может быть следующая проблема:
Предположим, у вас есть система с 4 процессорами и работа с 4 потоками. При работе в одиночку потоки разветвляются, чтобы использовать все 4 ядра, и общее использование почти идеально (мы назовем это 400%).
Если вы добавите одно однопоточное мешающее задание, планировщик может разместить 2 ваших потока в одном процессоре. Это означает, что 2 из ваших потоков теперь работают практически вдвое медленнее своего нормального темпа (резкое упрощение), и если ваши потоки должны периодически синхронизироваться, прогресс вашей работы может быть ограничен самым медленным потоком, который в этом случае работает с половина нормальной скорости. Вы увидите, что загрузка составляет всего 200% (от вашей работы 4x50%) плюс 100% (мешающая работа) = 300%.
Аналогичным образом, если вы предполагаете, что мешающее задание использует только 25% времени одного процессора, вы можете увидеть один из ваших потоков и источник помех на одном и том же процессоре. В этом случае самый медленный поток работает с нормальной скоростью 3/4, в результате чего общее использование составляет 300% (4x75%) + 25% = 325%. Поиграйте с этими числами, и нетрудно придумать что-то похожее на то, что вы видите.
Если это проблема, вы, конечно же, можете поиграть с приоритетами, чтобы дать нежелательным задачам лишь крошечные доли доступного ЦП (я предполагаю, что задержки ввода-вывода не имеют значения). Или, как вы обнаружили, попробуйте увеличить потоки, чтобы каждый процессор имел, скажем, 2 потока, минус несколько, чтобы учесть системные задачи. Таким образом, 24-ядерная система может работать лучше всего, скажем, с 46 потоками (что всегда оставляет половину времени 2 ядер доступным для системных задач).