2013-08-14 4 views
1

Мне не удалось найти хорошее объяснение того, почему многопоточный исполняемый файл захочет установить ProcessorAffinity для каждого потока. Для меня, похоже, это пытается переопределить CLR/операционную систему; что-то я не думаю, что я достаточно умен, чтобы делать.Зачем устанавливать ProcessorAffinity для потока?

Почему я хочу участвовать в настройке ProcessorAffinity для потоков в многоядерной системе?

+2

Кэширование процессора – Paparazzi

+1

Лицензия на процессор. – Steve

+1

Кто-нибудь видел какие-либо цифры, которые показывают, что параметр ProcessorAffinity имеет преимущества в целом? –

ответ

2

Если вы укажете нить для запуска с не установленным сродством, тогда ей будет разрешено работать на любом ядре. Это означает, однако, что когда одно ядро ​​занято, оно переместит вашу нить на другое ядро, это остановка и возможное перемещение называется Context Switch. В большинстве случаев вы никогда этого не заметите, но в таких случаях, как игровые консоли, контекстный переключатель может быть удивительно дорогостоящим процессом.

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

1

Только очень специфичные типы приложений действительно используют преимущества ручной аффинности резьбы, в основном приложения с длительными параллельными процессами. Я мог представить, что он используется в антивирусных сканерах или в математических приложениях, таких как Seti @ Home.

Еще одно теоретическое преимущество заключается в том, что процессор может использовать свой кеш, если у вас небольшие процессы, которые выполняются несколько раз. Но опять же, на самом деле вам понадобится действительно конкретный тип приложения, чтобы сделать разницу заметной.

У меня никогда не было необходимости беспокоиться об этом. Обычно операционная система лучше знает.

0

Кэширование процессора.

И может использовать его для дроссельной заслонки.
Возможно, у вас более низкий приоритет, который вы не хотите доминировать.
На 4-процессорном компьютере можно ограничить его одним процессором.
Дроссельная заслонка также может быть выполнена с приоритетом потока.
Использовал бы это только в том случае, если процесс будет полезен при кешировании.
Мне это нравится, потому что в диспетчере задач я вижу, как он забивает один процессор.