Question Forcer l'utilisation spécifique du cœur du processeur dans les programmes sous Windows 7


Est-il possible de forcer un programme à s'exécuter sur cpu1 plutôt que cpu0, sachant qu'il existe au moins deux cœurs?

Je compile C ++ avec code :: blocks sur Windows 7 x64


4
2017-07-13 23:26


origine


Je me pencherai pour dire que c'est une question SO. - rob


Réponses:


Je sais que vous pouvez extraire le gestionnaire de tâches et rechercher votre application en cours d'exécution. Cliquez avec le bouton droit sur l'application dans le gestionnaire de tâches et sélectionnez Affinity.

enter image description here

Ensuite, vous pouvez sélectionner les processeurs que vous souhaitez utiliser.

enter image description here


8
2017-07-13 23:53



Notez que je ne pense pas que ce soit une GARANTIE qu’ils ne fonctionneront que sur les cœurs sélectionnés, mais qu’ils sont littéralement une affinité. S'il y a des threads que Windows ressent, A: Peut se déplacer et B: Doit bouger, c C: les déplace. Cela n'empêche pas non plus l'exécution d'autres tâches sur ces cœurs (qui fait l'objet d'une longue question que j'ai ouverte: /) - Shinrai


Oui, il existe dans l'API Windows: SetProcessAffinityMask (). Vous pouvez également définir une affinité de processus en utilisant le gestionnaire de tâches comme montré ici.

Il n’ya pas beaucoup de raisons valables pour lesquelles vous voudriez le faire. Le système d'exploitation effectue généralement un bon travail de planification des programmes sur le bon processeur.


5
2017-07-13 23:52



Savez-vous s'il existe également un moyen d'exécuter un thread sur un core particulier? Parce que GSC Game World a réclamé une mise à jour de S.T.A.L.K.E.R. qu'ils ont déplacé le calcul des objets détaillés vers le cœur du second processeur et je ne peux pas imaginer qu'ils aient utilisé un processus complet pour cela, un simple thread aurait plus de sens. (stalker.filefront.com/file/...) - Felix Dombek
Il y a SetThreadAffinityMask (), mais très probablement S.T.A.L.K.E.R ne l'a pas utilisé. Ils ont simplement déplacé le calcul de leur thread de logique de jeu principal et l'ont placé dans son propre thread dédié et ont laissé le système d'exploitation gérer la planification du thread sur un autre processeur. - shf301