Como defino permanentemente a afinidade de um processo?

Como defino permanentemente a afinidade de um processo?

Eu tenho um jogo que apresenta problemas de uso da CPU, então uma das soluções é desabilitar um núcleo de uma CPU quad core. Como toda vez que inicio o jogo, tenho que entrar manualmente no Gerenciador de Tarefas e inserir manualmente a afinidade, o que é uma droga, já que o jogo foi lançado recentemente, mas está sujeito a travamentos frequentes.

Existe uma solução NÃO SOFTWARE?

Pesquisei algumas soluções on-line e elas parecem ser voltadas apenas para o Windows 7. Existe uma solução para usuários do Windows 8.1 como eu?

Responder1

Você pode criar um atalho para atribuir afinidade.

X:\Windows\System32\cmd.exe /C start /affinity Y game.exe

Yé hexadecimal e é uma máscara de bits:

0x1 - 0001 - Core0
0x2 - 0010 - Core1
0x3 - 0011 - Core1 & Core0
0x4 - 0100 - Core2
0x5 - 0101 - Core2 & Core0
0x6 - 0110 - Core2 & Core1
0x7 - 0111 - Core2 & Core1 & Core0
0x8 - 1000 - Core3
0x9 - 1001 - Core3 & Core0
0xA - 1010 - Core3 & Core1
0xB - 1011 - Core3 & Core1 & Core0
0xC - 1100 - Core3 & Core2
0xD - 1101 - Core3 & Core2 & Core0
0xE - 1110 - Core3 & Core2 & Core1
0xF - 1111 - Core3 & Core2 & Core1 & Core0

Responder2

Se por "não software" você quer dizer que não requer software adicional, existe. Você pode executar o programa a partir de um script de comando e usar a opção de afinidade"Start /AFFINITY 20 process.exe"

/AFFINITY 20trata 20como um número hexadecimal, com um equivalente binário de 100000, que define a afinidade para o núcleo 5 de 0 a 5 em um processador de 6 núcleos. Uma máscara hexadecimal semelhante permitirá desabilitar um núcleo específico, como E, que executa o processo apenas nos núcleos 1-3 de 0-3 ou 0-5.

Responder3

Para quem procura respostas para isso e não encontra nenhuma, a solução que encontrei foi usar um aplicativo chamadoWinAFC(ou AffinityChanger). Esta é uma GUI parcial, um aplicativo de linha de comando parcial que permite especificar perfis para determinados executáveis ​​​​e pesquisará a lista de processos para eles. Se encontrar processos correspondentes, alterará a afinidade desses processos de acordo com as configurações do perfil carregado.

Há alguma documentação aqui:http://affinitychanger.sourceforge.net/

Para meus propósitos, criei um perfil parecido com este:

TestMode = 0
TimeInterval = 1
*\convert.exe := PAIR0+PAIR1

Este perfil define qualquer processo convert.exe para usar os dois primeiros pares de núcleos de CPU (CPU0, CPU1, CPU2 e CPU3), pesquisando a cada segundo. TestModeé uma alternância que permite ver se o seu perfil está funcionando sem realmente definir afinidades.

Espero que alguém ache isso útil!

Responder4

Sou novo aqui e postei pela primeira vez neste fórum, mas de qualquer forma criei este gráfico que facilita muito o entendimento, basta digitar o valor hexadecimal Y na linha de comando para habilitar o número de threads da CPU. Aproveitar!

CPU - HEX  - BINARY
00 -- 1 ---- 0001
01 -- 3 ---- 0011
02 -- 7 ---- 0111
03 -- F ---- 1111
04 -- 1F --- 0001 1111
05 -- 3F --- 0011 1111
06 -- 7F --- 0111 1111
07 -- FF --- 1111 1111
08 -- 1FF -- 0001 1111 1111
09 -- 3FF -- 0011 1111 1111
10 -- 7FF -- 0111 1111 1111
11 -- FFF -- 1111 1111 1111
12 -- 1FFF - 0001 1111 1111 1111
13 -- 3FFF - 0011 1111 1111 1111
14 -- 7FFF - 0111 1111 1111 1111
15 -- FFFF - 1111 1111 1111 1111

%ComSpec% /c start /affinity Y game.exe

informação relacionada