Машина : 64-ядерный процессор AMD с одним сокетом и гиперпоточностью (что означает 128 аппаратных потоков) под управлением Cent OS 7.7
Экспериментальный набор 1 : создано 5888 (потому что 5888 кратно 128) потокам, и каждый поток вычисляет 37-е число Фибоначчи с использованием рекурсивного метода fib (n) = fib (n-1) + fib (n-2). Это сделано специально, чтобы требовать интенсивных вычислений. Я провел несколько тестов с разными приоритетами потоков и политиками планирования (SCHED_RR и SCHED_FIFO). Однако при любом тестовом запуске все 5888 потоков будут иметь одинаковый приоритет и одинаковую политику планирования.
Экспериментальный набор 2 : То же, что и выше, за исключением того, что я не устанавливаю никакого приоритета потока для любого из 5888 потоков.
Наблюдения : Время выполнения из Экспериментального набора 1 примерно в 4 раза медленнее по сравнению с Экспериментальным набором 2 , и это не зависит от приоритетов потоков и / или политик планирования, используемых в Экспериментальном наборе 1 .
Вопрос : Почему время выполнения медленнее, когда я устанавливаю приоритеты потоков по сравнению с отсутствием установки Приоритеты потоков?
Затем мы попытались воспроизвести результаты этого эксперимента в нашем программном обеспечении, удалив все вызовы, которые устанавливают приоритеты потоков, чтобы все потоки выполнялись с приоритетом по умолчанию ОС. Мы увидели значительное улучшение (до 30%)