¿Cómo configuro permanentemente la afinidad de un proceso?

¿Cómo configuro permanentemente la afinidad de un proceso?

Tengo un juego que tiene problemas con el uso de la CPU, por lo que una de las soluciones es desactivar un núcleo de una CPU de cuatro núcleos. Dado que cada vez que inicio el juego tengo que ir manualmente al Administrador de tareas e ingresar manualmente la afinidad, lo cual apesta ya que el juego es recién lanzado pero es propenso a fallas frecuentes.

¿Existe una solución SIN SOFTWARE?

Busqué algunas soluciones en línea y parecen estar orientadas únicamente a Windows 7. ¿Existe alguna solución para usuarios de Windows 8.1 como yo?

Respuesta1

Puede crear un acceso directo para asignar afinidad.

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

Yes hexadecimal y es un poco de máscara:

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

Respuesta2

Si por "sin software" te refieres a no requerir software adicional, lo hay. Puede ejecutar el programa desde un script de comando y usar el interruptor de afinidad"Start /AFFINITY 20 process.exe"

/AFFINITY 20trata 20como un número hexadecimal, con un equivalente binario de 100000, que establece la afinidad con el núcleo 5 de 0 a 5 en un procesador de 6 núcleos. Una máscara hexadecimal similar le permitirá desactivar un núcleo específico, como E, que solo ejecuta el proceso en los núcleos 1-3 de 0-3 o 0-5.

Respuesta3

Para cualquiera que busque respuestas a esto y no encuentre ninguna, la solución que encontré fue usar una aplicación llamadaganarAFC(o AffinityChanger). Esta es una GUI parcial y una aplicación de línea de comandos parcial que le permite especificar perfiles para ciertos ejecutables y sondeará la lista de procesos en busca de ellos. Si encuentra procesos coincidentes, cambiará la afinidad de esos procesos de acuerdo con la configuración en el perfil cargado.

Hay algo de documentación aquí:http://affinitychanger.sourceforge.net/

Para mis propósitos, creé un perfil que se parecía a este:

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

Este perfil configura cualquier proceso convert.exe para que utilice los dos primeros pares de núcleos de CPU (CPU0, CPU1, CPU2 y CPU3), sondeando cada segundo. TestModees una palanca que le permite ver si su perfil está funcionando sin tener que establecer afinidades.

¡Espero que alguien encuentre esto útil!

Respuesta4

Soy nuevo aquí y es la primera vez que publico en este foro, pero de todos modos he creado este gráfico que lo hace mucho más fácil de entender, simplemente ingrese el valor hexadecimal Y en la línea de comando para habilitar la cantidad de subprocesos de la CPU. ¡Disfrutar!

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

información relacionada