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

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

Ich habe ein Spiel, das Probleme mit der CPU-Auslastung hat. Eine der Lösungen besteht darin, einen Kern einer Quad-Core-CPU zu deaktivieren. Denn jedes Mal, wenn ich das Spiel starte, muss ich manuell in den Task-Manager gehen und die Affinität manuell eingeben, was nervt, da das Spiel neu veröffentlicht wurde und dennoch häufig abstürzt.

Gibt es eine Lösung ohne Software?

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

Antwort1

Sie können eine Verknüpfung zum Zuweisen von Affinität erstellen.

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

Yist 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

Antwort2

Wenn Sie mit "keine Software" meinen, dass keine zusätzliche Software erforderlich ist, gibt es welche. Sie können das Programm über ein Befehlsskript ausführen und den Affinitätsschalter verwenden"Start /AFFINITY 20 process.exe"

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

Antwort3

Für alle anderen, die nach Antworten auf diese Frage suchen und keine finden, war die Lösung, die ich gefunden habe, eine App namensWinAFC(oder AffinityChanger). Dies ist eine teilweise GUI- und teilweise Befehlszeilen-App, mit der Sie Profile für bestimmte ausführbare Dateien angeben können und die die Prozessliste nach ihnen abfragt. Wenn passende Prozesse gefunden werden, ändert es die Affinität dieser Prozesse entsprechend den Einstellungen im geladenen Profil.

Hier gibt es einige Dokumentationen:http://affinitychanger.sourceforge.net/

Für meine Zwecke habe ich ein Profil erstellt, das wie folgt aussah:

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

Dieses Profil stellt alle convert.exe-Prozesse so ein, dass sie die ersten beiden CPU-Kernpaare (CPU0, CPU1, CPU2 und CPU3) verwenden und jede Sekunde eine Abfrage durchführen. TestModeist ein Umschalter, mit dem Sie sehen können, ob Ihr Profil funktioniert, ohne tatsächlich Affinitäten festzulegen.

Hoffe, jemand findet das nützlich!

Antwort4

Ich bin neu hier und habe zum ersten Mal in diesem Forum gepostet. Trotzdem habe ich dieses Diagramm erstellt, das das Verständnis erheblich erleichtert. Geben Sie einfach den Hexadezimalwert Y in die Befehlszeile ein, um die Anzahl der CPU-Threads zu aktivieren. Viel Spaß!

CPU - HEX  - BINARY
00 -- 1 ---- 0001
01 -- 3 ---- 0011
02 -- 7 ---- 0111
03 -- F ---- 1111
04 -- 1F --- 0001 1111
05 -- 3F --- 0011 1111
06 -- 7F --- 0111 1111
07 -- FF --- 1111 1111
08 -- 1FF -- 0001 1111 1111
09 -- 3FF -- 0011 1111 1111
10 -- 7FF -- 0111 1111 1111
11 -- FFF -- 1111 1111 1111
12 -- 1FFF - 0001 1111 1111 1111
13 -- 3FFF - 0011 1111 1111 1111
14 -- 7FFF - 0111 1111 1111 1111
15 -- FFFF - 1111 1111 1111 1111

%ComSpec% /c start /affinity Y game.exe

verwandte Informationen