Снижение производительности с Linux приоритетов потоков - PullRequest
0 голосов
/ 26 мая 2020

Машина : 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%)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...