Comment définir définitivement l'affinité d'un processus?

17

J'ai un jeu qui a des problèmes avec l'utilisation du processeur, donc l'un des correctifs consiste à désactiver un cœur sur un processeur quadricœur. Depuis chaque fois que je lance le jeu, je dois manuellement aller dans le Gestionnaire des tâches et saisir manuellement l'affinité, ce qui est nul puisque le jeu est nouvellement sorti mais sujet à des plantages fréquents.

Existe-t-il une solution NON LOGICIELLE?

J'ai recherché certaines solutions en ligne et elles semblent être orientées uniquement vers Windows 7. Existe-t-il une solution pour les utilisateurs de Windows 8.1 comme moi?

yuritsuki
la source
Veuillez expliquer ce que vous entendez par «saisir manuellement l'affinité»?
Pacerier
@Pacerier Je dois changer manuellement l'affinité, car par défaut, il sélectionne tous les processeurs avec lesquels travailler.
yuritsuki
Vous pouvez essayer de définir le "Mode de compatibilité" sur une version assez ancienne de Windows, qui définit l'affinité pour un seul cœur. Mais je n'ai pas Win8 à portée de main pour vérifier si cela fonctionne toujours.
CodesInChaos
@cyberwebpoweruser, La réponse ci-dessous a-t-elle fonctionné pour vous?
Pacerier

Réponses:

24

Vous pouvez créer un raccourci pour affecter l'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
L'extraterrestre
la source
1
je pense que vous avez foiré les 3 premiers
Richie Frame
Oh, putain .. oui :) Corrigé ..
The_aLiEn
4
@The_aLiEn question: si ce processus démarre un autre processus, ce deuxième processus hérite-t-il de l'affinité du premier processus? J'ai le même problème avec un jeu, mais je dois changer l'affinité à la fois sur le lanceur et sur un gestionnaire de téléchargement tiers qui est démarré par le lanceur pour qu'il soit résolu.
Nzall
2
Avez-vous besoin de la cmd.exe /Cpièce, ou serait-ce suffisant pour commencer start?
deltab
2
@NateKerkhofs devrait hériter. Pas seulement l'affinité, comme tous les descripteurs de sécurité, les descripteurs possédés, etc.
The_aLiEn
7

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

/AFFINITY 20traite le 20comme un nombre hexidécimal, avec un équivalent binaire 100000, qui définit l'affinité pour le noyau 5 sur 0-5 sur un processeur à 6 noyaux. Un masque hex similaire vous permettra de désactiver un noyau spécifique, tel que E, qui exécute le processus uniquement sur les cœurs 1-3 sur 0-3 ou 0-5.

Cadre Richie
la source
«non logiciel» signifie cmd.
Pacerier
5

Pour quiconque cherche des réponses à cette question et n'en trouve aucune, la solution que j'ai trouvée était d'utiliser une application appelée WinAFC (ou AffinityChanger). Il s'agit d'une interface graphique partielle, d'une application de ligne de commande partielle qui vous permet de spécifier des profils pour certains exécutables et interrogera la liste des processus pour eux. S'il trouve des processus correspondants, il modifiera l'affinité de ces processus en fonction des paramètres du profil chargé.

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

Pour mes besoins, j'ai créé un profil qui ressemblait à 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 interrogeant chaque seconde. TestModeest une bascule qui vous permet de voir si votre profil fonctionne sans réellement définir des affinités.

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

Jake
la source