Установите привязку к команде start/AFFINITY в Windows 7

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

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

 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 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.

Ответы

Ответ 1

AFFINITY работает с шестнадцатеричной маской, которая должна обеспечивать гранулированный контроль над всеми вашими процессорами. Обратите внимание, что самый правый бит указывает CPU меньшего порядка (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)

Ответ 2

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

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

/AFFINITY 0x64

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

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

См. Также: Запустите приложение, назначенное конкретному процессору в Windows 7, 8 или Vista

Ответ 3

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

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.