Зачем планировать потоки между процессорами? - PullRequest
0 голосов
/ 05 ноября 2018

В некоторых статьях упоминается так называемая привязка к ядру, и этот метод связывает поток с ядром, что снижает стоимость планирования потоков между ядрами. В отличие от этого есть мой вопрос.
Почему операционная система выполняет эту работу быстрее при планировании потоков между ядрами.

1 Ответ

0 голосов
/ 07 ноября 2018

Вы, вероятно, неправильно истолковали то, что читали. Это не фактическое планирование , которое медленное, это то, что задача будет выполняться медленнее, когда она перемещается на новое ядро, потому что частные кеширования на ядро ​​будут холодными в этом новом ядре.

(И, что еще хуже, грязное на старом ядре требует обратной записи, прежде чем их можно будет прочитать.)

В большинстве операционных систем задача не «запланирована на ядро», а в том, что ядро, работающее на каждом ядре, получает задачу с наивысшим приоритетом, которая в данный момент выполняется, с учетом ограничений маски соответствия . (Функция планировщика на этом ядре будет рассматривать только те задачи, маска соответствия которых соответствует этому ядру.)

Не существует однопоточной программы главного управления, которая решает, что должно делать каждое ядро; планировщик в нормальных ядрах является кооперативным многопоточным алгоритмом.

Это в основном не фактическая стоимость процессорного времени в функции планировщика ядра, а в том, что на новом ядре задача выполняется медленнее.

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