Установите соответствие с помощью команды start / AFFINITY в Windows 7 - PullRequest
20 голосов
/ 14 октября 2011

Я использую команду start /AFFINITY [n] [.exe] для запуска исполняемого файла с указанной привязкой. У меня система с 8 процессорами (1,2,3,4,5,6,7,8). Я хотел бы настроить процесс на использование всех нечетных процессоров (1,3,5,7). Я не могу понять, как это сделать, и хотел бы знать, возможно ли это с помощью команды запуска. Если нет, есть ли альтернативный способ командной строки сделать это?

Помощь для команды запуска не была особенно полезна:

 AFFINITY    Specifies the processor affinity mask as a hexadecimal number.
             The process is restricted to running on these processors.

             The affinity mask is interpreted differently when /AFFINITY and
             /NODE are combined.  Specify the affinity mask as if the NUMA
             node's processor mask is right shifted to begin at bit zero.
             The process is restricted to running on those processors in
             common between the specified affinity mask and the NUMA node.
             If no processors are in common, the process is restricted to
             running on the specified NUMA node.

Ответы [ 3 ]

22 голосов
/ 14 октября 2011

AFFINITY работает с шестнадцатеричной маской , которая должна позволять гранулярный контроль всех ваших процессоров.Обратите внимание, что крайний правый бит задает ЦП самого низкого порядка (0) (см. KB 299641 ).

Для рассматриваемого случая 0xAA (10101010) запрашивает, чтобываш процесс запускается с использованием процессоров 1, 3, 5 и 7, но не 0, 2, 4 или 6. Не забудьте пропустить '0x' в командной строке.

 start /affinity AA app.exe

Другие примеры:

 start /affinity 1 app.exe     (only use CPU 0)
 start /affinity 2 app.exe     (only use CPU 1)
 start /affinity 1F app.exe    (only use CPUs 0, 1, 2, 3, and 4)
9 голосов
/ 01 сентября 2013

Чтобы получить правильный шестнадцатеричный номер, представьте свои ядра в формате плоскости 8765 4321 (для 8-ядерного процессора) в обратном направлении (но НЕ как 1234 5678)

Чтобы активировать ядра 7, 6 и 3, введите номер 0x64 для сходства:

/AFFINITY 0x64

Для лучшего взгляда сопоставьте и сравните: 0110 0100 - число = 0x64 (8765 4321) - ядра

Для примера @ladenedge: /AFFINITY AA 1010 1010 - число = 0xAA (8765 4321) - ядра

См. Также: Запуск приложения, назначенного определенному ЦП в Windows 7, 8 или Vista

4 голосов
/ 19 марта 2017

Дополнительная информация для ваших собственных вычислительных потребностей:

CPU ID  CPU value (dec)
0       001 (= 2^0)
1       002 (= 2^1)
2       004 (= 2^2)
3       008 (= 2^3)
4       016 (= 2^4)
5       032 (= 2^5)
6       064 (= 2^6)
7       128 (= 2^7)

Следовательно:

  • Маска для идентификаторов ЦП 0, 1, 2, 3, 4, 5, 6, 7: 255 (сумма отдельных десятичных значений ЦП), то есть маска 'FF' в виде шестнадцатеричной
  • Маска для идентификаторов ЦП 0, 2, 4, 6: 85 (сумма отдельных десятичных значений ЦП), то естьмаска '55' в шестнадцатеричном виде

Ссылка: поиск по шаблону 'Это значения маски сходства для системы с 8 процессорами' в https://msdn.microsoft.com/en-US/library/ms187104.aspx.

...