Você pode usar o sinalizador /affinity
usando o comando start
para especificar os núcleos que um processo deve usar.
Uso
start /affinity n foo.exe -arguments
Então, o seu atalho ficaria assim:
c:\windows\system32\cmd.exe /C start /affinity n foo.exe -arguments
em que n é
Número do núcleo da CPU +1.
Então, para rodar no Core 0, seria:
c:\windows\system32\cmd.exe /C start /affinity 1 foo.exe -arguments
.
Especificando vários núcleos
Suponha que uma CPU tenha 4 núcleos. Para especificar os núcleos a serem usados:
-
Visualize os núcleos como uma matriz com o comprimento da matriz igual ao número de núcleos. Os núcleos serão organizados em ordem decrescente da direita para a esquerda:
[CPU3, CPU2, CPU1, CPU0]
-
Agora, substitua os núcleos que você gostaria que seu processo usasse com 1 e os que você não usaria com 0. Supondo que eu queira que meu processo use core 3 & 1, minha matriz gostaria disso:
[0,1,0,1]
-
"Pop" os elementos da matriz para uma string. Agora seria representado como
0101
. -
Suponha que a string esteja em binário e a converta em hexadecimal. Agora seria
0x5
-
Agora use o mesmo comando
start /affinity n foo.exe -arguments
, mas agoran
será0x5
, dandostart /affinity 0x5 foo.exe -arguments
- A fonte explica a visualização como uma string binária, não uma matriz (confira). Acho isso um pouco confuso, então expliquei usando uma matriz.
- A origem não especifica que você deve prefixar
0x
para mostrar que é hexadecimal no comando. A leitura destart /?
especifica que deve ser hexadecimal.