Frage Erzwingen Sie spezifische CPU-Kernnutzung in Programmen unter Windows 7


Gibt es eine Möglichkeit, ein Programm zu zwingen, auf cpu1 statt cpu0 zu laufen, da ich weiß, dass es mindestens zwei Kerne gibt?

Ich kompiliere C ++ mit code :: blocks unter Windows 7 x64


4
2017-07-13 23:26


Ursprung


Ich würde sagen, das ist eine SO Frage. - rob


Antworten:


Ich weiß, dass Sie Task-Manager aufrufen und nach Ihrer Anwendung suchen können, die ausgeführt wird. Klicken Sie mit der rechten Maustaste auf die Anwendung im Task-Manager und wählen Sie Affinität.

enter image description here

Dann können Sie die Prozessoren auswählen, die Sie verwenden möchten.

enter image description here


8
2017-07-13 23:53



Beachten Sie, dass ich nicht glaube, dass dies eine GARANTIE ist, dass sie nur auf den ausgewählten Kernen laufen, nur buchstäblich eine Affinität. Wenn es Threads gibt, die Windows als A empfindet: Kann sich bewegen und B: Sollte sich bewegen, C: Wird sie bewegen. Dies verhindert auch nicht, dass andere Dinge auf diesen Kernen laufen (was der Gegenstand einer langen Frage ist, die ich offen habe:) - Shinrai


Ja, es gibt in der Windows-API: SetProcessAffinityMask (). Sie können auch eine Prozessaffinität mithilfe des Task-Managers festlegen hier gezeigt.

Es gibt nicht viele gültige Gründe, warum Sie das tun möchten. Das OS ist im Allgemeinen gut darin, Programme auf der richtigen CPU zu planen.


5
2017-07-13 23:52



Weißt du, ob es auch eine Möglichkeit gibt, einen Thread auf einem bestimmten Kern auszuführen? Weil GSC Game World in einem Update für S.T.A.L.K.E.R. dass sie die Berechnung detaillierter Objekte auf den zweiten Prozessorkern verlagert haben und ich mir nicht vorstellen kann, dass sie dafür einen vollwertigen Prozess verwenden, wäre ein einfacher Thread sinnvoller. (stalker.filefront.com/file/...) - Felix Dombek
Es gibt SetThreadAffinityMask (), aber höchstwahrscheinlich S.T.A.L.K.E.R benutzte das nicht. Sie haben die Berechnung einfach aus ihrem Hauptspiellogik-Thread verschoben und in ihren eigenen dedizierten Thread eingefügt und lassen das Betriebssystem damit umgehen, den Thread auf einer anderen CPU zu planen. - shf301