Установите соответствие с помощью команды start /AFFINITY в Windows 7

Я использую 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 ответа

Решение

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)

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

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

/AFFINITY 0x64

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

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

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

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

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.

Другие вопросы по тегам