Назад | Перейти на главную страницу

Однопоточное приложение балансируется по ядрам процессора?

Есть ли простой способ проверить, балансируется ли определенное однопоточное приложение между ядрами ЦП в Windows?

Я уже пробовал Process Explorer, но не смог найти способ прочитать его, если вообще возможно.

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

«Сбалансированный» - термин относительный.

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

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

Я имею в виду, что для однопоточного процесса Тебе все равно - Доверяйте планировщику вашей операционной системы, чтобы он делал все правильно (он действительно умнее вас в подобных вещах).


Для многопоточных процессов применяется та же самая логика, только несколько раз: Вам не все равно? ГДЕ потоки выполняются до тех пор, пока они получают необходимое им процессорное время и работают быстро?
Думаю, нет.


Чтобы ответить на ваш вопрос: потому что вам действительно все равно, я не думаю, что это возможно.

В Windows определенно нет простого способа добиться этого (диспетчер задач и Process Explorer все равно не раскрывают его). Вы можете заглянуть в скрипты Power Shell, но я тоже не верю, что там есть способ сделать это ...