LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

ну а виртуальные ядра?

Это hyper-threading какой нибудь?

для работы с sMp встраиваются блокировки, которые понижают производительность

Для работы чилодробилок на разных ядрах блокировки не нужны и производительность растёт линейно с числом ядер.

хотел бы знать как насамом деле планировщик выделяет процессорное время для многопроцессорных машин, как происходят блокировки

Отдельно для каждого ядра. Планировщику на одном ядре не обязательно знать о планировщиках на других ядрах. Блокировки нужны только для общих для всех планировщиков структур, таких как список потоков (всех и активных).

есть ли вытеснения процессов при smp и что происходит когда процесс не завершен и его процессорное время истекло?

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

на какой процессор его переведет планирощик? или он поставит его в очередь на тот же на каком он выполнялся этот процесс?

Это уже детали реализации. Обычно стараются запускать поток на одном и том же ядре чтобы эффективнее использовать кэши.

Исходная версия X512, :

ну а виртуальные ядра?

Это hyper-threading какой нибудь?

для работы с sMp встраиваются блокировки, которые понижают производительность

Для работы чилодробилок на разных ядрах блокировки не нужны и производительность растёт линейно с числом ядер.

хотел бы знать как насамом деле планировщик выделяет процессорное время для многопроцессорных машин, как происходят блокировки

Отдельно для каждого ядра. Планировщику на одном ядре не обязательно знать о планировщиках на других ядрах. Блокировки нужны только для общих для всех планировщиков структур, таких как список потоков (всех и активных).

есть ли вытеснения процессов при smp и что происходит когда процесс не завершен и его процессорное время истекло?

Есть также как и без smp, но это работает независимо на каждом ядре, у каждого ядра свой таймер истечения кванта планирования.

на какой процессор его переведет планирощик? или он поставит его в очередь на тот же на каком он выполнялся этот процесс?

Это уже детали реализации. Обычно стараются запускать поток на одном и том же ядре чтобы эффективнее использовать кэши.