web-dev-qa-db-fra.com

Comment définir de manière permanente l'affinité d'un processus?

J'ai un jeu qui a des problèmes d'utilisation du processeur, donc l'un des correctifs consiste à désactiver un cœur d'un processeur à quatre cœurs. Depuis que je lance le jeu à chaque fois, je dois aller manuellement dans le gestionnaire de tâches et entrer manuellement l'affinité, ce qui est nul puisque le jeu vient de sortir mais est sujet à de fréquents crashs.

Existe-t-il une solution NON LOGICIELLE?

J'ai cherché des solutions en ligne et elles semblent ne concerner que Windows 7. Existe-t-il une solution pour les utilisateurs Windows 8.1 comme moi?

17
yuritsuki

Vous pouvez créer un raccourci pour attribuer une affinité.

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

Y est hexadécimal et est un masque 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
23
The_aLiEn

Si par "non logiciel" vous voulez dire ne pas nécessiter de logiciel supplémentaire, il y en a. Vous pouvez exécuter le programme à partir d'un script de commande et utiliser le commutateur d'affinité "Start /AFFINITY 20 process.exe"

/AFFINITY 20 traite le 20 en tant que nombre hexadécimal, avec un équivalent binaire de 100000, qui définit l'affinité au core 5 sur 0-5 sur un processeur à 6 coeurs. Un masque hexagonal similaire vous permettra de désactiver un noyau spécifique, tel que E, qui n'exécute le processus que sur des cœurs 1-3, sur 0-3 ou 0-5.

7
Richie Frame

Pour ceux qui recherchent des réponses à cette question sans en trouver, la solution que j'ai trouvée était d'utiliser une application appelée WinAFC (ou AffinityChanger). Il s'agit d'une application partielle en ligne de commande, à interface graphique, qui vous permet de spécifier des profils pour certains exécutables. Elle interroge ensuite la liste des processus. S'il trouve des processus correspondants, l'affinité de ces processus change en fonction des paramètres définis dans le profil chargé.

Il y a de la documentation ici: http://affinitychanger.sourceforge.net/

Pour mes besoins, j'ai créé un profil qui ressemble à ceci:

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

Ce profil définit tout processus convert.exe pour utiliser les deux premières paires de cœurs de processeur (CPU0, CPU1, CPU2 et CPU3), en effectuant une scrutation toutes les secondes. TestMode est une bascule qui vous permet de voir si votre profil fonctionne sans définir réellement d'affinités.

J'espère que quelqu'un trouve cela utile!

4
Jake