2

Будет ли процесс переключаться между различными ядрами для повышения производительности? Если процесс переходит между ядрами, какие компоненты распределяются между ядрами? Кэш L1-L3, регистры или память?

3 ответа3

1

Будет ли процесс переключаться между различными ядрами для повышения производительности?

Это зависит от того, является ли процесс многопоточным или нет. Сам процесс по сути является просто "контейнером" для потоков, он должен иметь как минимум один для запуска. Каждый поток может использовать ядро ЦП, поэтому, если ваш процесс имеет 2 потока (графический интерфейс и рабочий поток), он будет работать на 2 ядрах ЦП.

Вопрос "Будет ли процесс переключаться между различными ядрами" не совсем корректен, потому что такое переключение запланировано операционной системой (ОС), а НЕ самим процессом!

0

Давайте представим занятый одноядерный процессор с двухъядерной системой, где нагрузка приближается к 100%.

Процесс с PID 1234 имеет только один поток (например, консольное приложение, выполняющее сжатие звука с одной нитью).

Для такого рода процессов система будет стараться изо всех сил запустить поток на том же ядре, чтобы минимизировать ошибки кэша. Однако, если система действительно занята, аналогичные другие процессы могут также попытаться работать на тех же ядрах. В этом случае, в принципе, ваш однопотоковый процесс может выполняться сначала на ядре № 1, затем на ядре № 2 и т.д. И т.д.

0

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

Эти команды сохранения и загрузки являются одними из самых медленных команд на ЦП, хотя они не будут замечены, если выполняются очень редко.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .