Wie stelle ich die Affinität eines Prozesses dauerhaft ein?

17

Ich habe ein Spiel, das Probleme mit der CPU-Auslastung hat, daher besteht eine der Korrekturen darin, einen Kern aus einer Quad-Core-CPU zu deaktivieren. Da ich das Spiel jedes Mal starte, muss ich manuell in den Task-Manager gehen und die Affinität manuell eingeben, was schade ist, da das Spiel neu veröffentlicht wurde und dennoch häufigen Abstürzen ausgesetzt ist.

Gibt es eine NON SOFTWARE-Lösung?

Ich habe einige Lösungen online nachgeschlagen und sie scheinen nur auf Windows 7 ausgerichtet zu sein. Gibt es eine Lösung für Windows 8.1-Benutzer wie mich?

Yuritsuki
quelle
Bitte erläutern Sie, was Sie unter "Affinität manuell eingeben" verstehen.
Pacerier
@Pacerier Ich muss die Affinität manuell ändern, da standardmäßig alle CPUs ausgewählt werden, mit denen gearbeitet werden soll.
Yuritsuki
Sie können versuchen, den "Kompatibilitätsmodus" auf eine ausreichend alte Version von Windows einzustellen, bei der die Affinität für einen einzelnen Kern festgelegt wird. Aber ich habe win8 nicht zur Hand, um zu prüfen, ob das noch funktioniert.
CodesInChaos
@cyberwebpoweruser, Hat die Antwort unten für Sie funktioniert?
Pacerier

Antworten:

24

Sie können eine Verknüpfung erstellen, um die Affinität zuzuweisen.

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

Y ist hexadezimal und eine Bitmaske:

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
Das Alien
quelle
1
Ich denke, Sie haben die ersten 3 durcheinander gebracht
Richie Frame
Oh, verdammt .. ja :) Korrigiert ..
The_aLiEn
4
@The_aLiEn Frage: Wenn dieser Prozess einen anderen Prozess startet, erbt dieser zweite Prozess die Affinität des ersten Prozesses? Ich habe das gleiche Problem mit einem Spiel, aber ich muss die Affinität sowohl auf dem Launcher als auch auf einem Download-Manager eines Drittanbieters ändern, der vom Launcher gestartet wird, damit das Problem behoben wird.
Nzall,
2
Benötigen Sie das cmd.exe /CTeil oder würde es ausreichen, um damit zu beginnen start?
DeltaB
2
@NateKerkhofs sollte es erben. Nicht nur Affinität, wie alle Sicherheitsbeschreibungen, Handles im Besitz usw.
The_aLiEn
7

Wenn Sie unter "Nicht-Software" verstehen, dass Sie keine zusätzliche Software benötigen, ist dies der Fall. Sie können das Programm über ein Befehlsskript ausführen und den Affinitätsschalter verwenden"Start /AFFINITY 20 process.exe"

/AFFINITY 20behandelt die 20als Hexadezimalzahl mit einem binären Äquivalent von 100000, wodurch die Affinität zu Core 5 auf einem 6-Core-Prozessor von 0-5 festgelegt wird. Mit einer ähnlichen Hex-Maske können Sie einen bestimmten Kern deaktivieren, z. B. E, der den Prozess nur für die Kerne 1-3 von 0-3 oder 0-5 ausführt.

Richie Frame
quelle
"Nicht-Software" bedeutet cmd.
Pacerier
5

Für alle anderen, die nach Antworten suchen und keine finden, bestand die Lösung darin, eine App namens WinAFC (oder AffinityChanger) zu verwenden. Dies ist eine partielle GUI, eine partielle Befehlszeilen-App, mit der Sie Profile für bestimmte ausführbare Dateien angeben und die Prozessliste nach ihnen abfragen können. Wenn übereinstimmende Prozesse gefunden werden, wird die Affinität dieser Prozesse entsprechend den Einstellungen im geladenen Profil geändert.

Hier finden Sie einige Dokumentationen: http://affinitychanger.sourceforge.net/

Für meine Zwecke habe ich ein Profil erstellt, das folgendermaßen aussah:

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

Dieses Profil legt fest, dass jeder convert.exe-Prozess die ersten beiden CPU-Kernpaare (CPU0, CPU1, CPU2 und CPU3) verwendet und jede Sekunde abruft. TestModeist ein Toggle, mit dem Sie sehen können, ob Ihr Profil funktioniert, ohne Affinitäten festzulegen.

Hoffe, jemand findet das nützlich!

Jake
quelle