История изменений
Исправление X512, (текущая версия) :
ну а виртуальные ядра?
Это hyper-threading какой нибудь?
для работы с sMp встраиваются блокировки, которые понижают производительность
Для работы чилодробилок на разных ядрах блокировки не нужны и производительность растёт линейно с числом ядер.
хотел бы знать как насамом деле планировщик выделяет процессорное время для многопроцессорных машин, как происходят блокировки
Отдельно для каждого ядра. Планировщику на одном ядре не обязательно знать о планировщиках на других ядрах. Блокировки нужны только для общих для всех планировщиков структур, таких как список потоков (всех и активных).
есть ли вытеснения процессов при smp и что происходит когда процесс не завершен и его процессорное время истекло?
Есть также как и без smp, но это работает независимо на каждом ядре, у каждого ядра свой таймер истечения кванта планирования. Ядер обычно меньше чем активных потоков, так что без вытеснения работать не будет.
на какой процессор его переведет планирощик? или он поставит его в очередь на тот же на каком он выполнялся этот процесс?
Это уже детали реализации. Обычно стараются запускать поток на одном и том же ядре чтобы эффективнее использовать кэши.
Исходная версия X512, :
ну а виртуальные ядра?
Это hyper-threading какой нибудь?
для работы с sMp встраиваются блокировки, которые понижают производительность
Для работы чилодробилок на разных ядрах блокировки не нужны и производительность растёт линейно с числом ядер.
хотел бы знать как насамом деле планировщик выделяет процессорное время для многопроцессорных машин, как происходят блокировки
Отдельно для каждого ядра. Планировщику на одном ядре не обязательно знать о планировщиках на других ядрах. Блокировки нужны только для общих для всех планировщиков структур, таких как список потоков (всех и активных).
есть ли вытеснения процессов при smp и что происходит когда процесс не завершен и его процессорное время истекло?
Есть также как и без smp, но это работает независимо на каждом ядре, у каждого ядра свой таймер истечения кванта планирования.
на какой процессор его переведет планирощик? или он поставит его в очередь на тот же на каком он выполнялся этот процесс?
Это уже детали реализации. Обычно стараются запускать поток на одном и том же ядре чтобы эффективнее использовать кэши.