Windows 10 - Establecer CPU Affinity de un programa en un .bat (sin usar el task manaker)

Buenas,

estoy jugando al Assassin's Creed Brotherhood y el jodido usa solo el hilo 1 de los 8 de mi cpu. Haciendo pruebas veo que el juego como mejor va es forzando a usar solo los hilos 0, 2, 4 y 6 y lo hago desde el TASK MANAGER de Windows.

Me gustaría no tener que hacerlo así cada vez que lanzo el juego y según leo sí se puede, pero no me funciona.

Aquí unos links donde lo explican:

https://stackoverflow.com/questions/775 ... -windows-7
https://www.tenforums.com/performance-m ... d-cmd.html

He probado con un .bat en la misma carpeta del juego con este contenido (0x55 en hexadecimal se supone que equivale a usar el hilo 0,2,4 y 6):

start /affinity 55 ACBSP.exe

y con

start /affinity 0x55 ACBSP.exe

y NO funciona, sigue cogiéndome solo el hilo 0.

¿puede ser que esto no funcione en windows 10?

Gracias
@clamatac Puedes utilizar el programa Bill2's Process Manager https://www.bill2-software.com/processm ... d-en.shtml , puedes crear una regla para el ejecutable del juego y que se establezca la prioridad de ejecución y también afinidad en los cores que quieres.

Saludos
tiene buena pinta pero unas dudas.

Para que se ejecute la regla, el "Bill2's Process Manager" se tiene que estar ejecutando, ¿correcto?

Lo acabo de probar y va a medias, si pongo que use el hilo 1, 3, 5 y 7 (de los 8 en total que hay con el hyperthreadking ) se lo pasa por el forro y solo usa el hilo 1.

Sin embargo, si le digo que use 3,4,5,6,7 y 8 sí parece que pasa del 1, 2 y al menos si distribuye bien la carga entre el 3-8.

Algo es algo.

Gracias, haré más pruebas.
No tengo Windows 10 (ó 7) (ni mucho menos tantos nucleos [+risas] ), pero prueba a ver si start usa el bit mask inverso, es decir, en vez de 0x55, 0xAA (o AA), o sea, en vez de 01010101, 10101010 para el 2, 4, 6, 8.

De todas formas, aunque prioaff no creo que funcione en Windows 10 (ó 7), mira a ver si te valdría. En este caso el bit mask es de derecha a izquierda, pero binario, no hexadecimal.

Aunque sea viejo y tal vez no funcione en nuevos sistemas, lo subo aquí por la rareza que es.

Adjuntos

prioaff.zip (10.19 KB)

Establecer prioridad de procesos
@clamatac Sí, obviamente debe de estar ejecutándose, para que cuando detecte el ejecutable del juego, establezca la prioridad y afinidad.
killogy escribió:@clamatac Sí, obviamente debe de estar ejecutándose, para que cuando detecte el ejecutable del juego, establezca la prioridad y afinidad.


Funciona bastante bien, muchas gracias por la recomendación.
killogy escribió:@clamatac Sí, obviamente debe de estar ejecutándose, para que cuando detecte el ejecutable del juego, establezca la prioridad y afinidad.



recupero hilo

me funcionó bien para el Assasin's Creed Brotherhood pero no me funcoina para el Assassin's Creed Revelations.

Si lo hago a mano por el TASK MANAGER sí funciona.

¿es posible que con algunos juegos no funcione?

Gracias
@clamatac Puedes probar con otro programa, como puede ser ImageCFG https://robpol86.com/imagecfg.html#history que lo que hará es modificar el ejecutable estableciendo su afinidad, por lo que no tendrás que tener ningún programa en segundo plano para crear esa afinidad, pero tendrás que tener una copia del ejecutable original, por si en alguna actualización se sobrescribe.

Y también puede que no puedas modificarlo, dependerá del juego en si, con le Left 4 dead 2 me funciona.

También puedes probar con ProcAff https://www.stefan-kuhr.de/cms/index.ph ... &Itemid=77
8 respuestas