Вы можете использовать /affinity
флаг, используя start
команду, чтобы указать ядра, которые должен использовать процесс.
использование
start /affinity n foo.exe -arguments
Итак, ваш ярлык будет выглядеть так:
c:\windows\system32\cmd.exe /C start /affinity n foo.exe -arguments
где n - номер ядра процессора +1.
Так что для запуска на Core 0 это будет:
c:\windows\system32\cmd.exe /C start /affinity 1 foo.exe -arguments
,
Указание нескольких ядер
Предположим, что процессор имеет 4 ядра. Чтобы указать ядра для использования:
Визуализируйте ядра как массив с длиной массива, равной количеству ядер. Ядра будут расположены в порядке убывания справа налево:
[CPU3, CPU2, CPU1, CPU0]
Теперь замените ядра, которые вы хотите, чтобы ваш процесс использовал на 1, а те, которые вы не хотите использовать на 0. Предполагая, что я хочу, чтобы мой процесс использовал ядра 3 и 1, мой массив будет выглядеть так:
[0,1,0,1]
«Высовывать» элементы массива в строку. Теперь это будет представлено как
0101
.Предположим, что строка в двоичном формате и преобразовать его в шестнадцатеричный. Теперь было бы
0x5
Теперь используйте ту же команду,
start /affinity n foo.exe -arguments
но теперьn
будет0x5
, даваяstart /affinity 0x5 foo.exe -arguments
- Источник объясняет визуализацию в виде двоичной строки, а не массива (проверьте это). Я нахожу это немного запутанным, поэтому я объяснил, используя массив.
- Источник не указывает, что вы должны использовать префикс,
0x
чтобы показать его шестнадцатеричный в команде. Чтениеstart /?
указывает, что оно должно быть шестнадцатеричным.