Thread-Zuordnung per Software?

Colindo

Redakteur
Teammitglied
Registriert
Dez. 2015
Beiträge
2.872
Hallo zusammen,

ich habe mich gefragt, ob es eine Software gibt, die eine permanente Thread-Zuordnung von Anwendungen vornehmen kann. Zurzeit nutze ich einen Ryzen 1700 und habe bei dem Spiel Assassin's Creed Rogue bemerkt, dass es Ruckler gibt, wenn Windows dem Spiel alle 16 Threads zur Verfügung stellt. Sobald ich die Zuordnung auf die Cores 0,2,4,6 ändere, läuft das Spiel problemlos flüssig. Ich denke da gibt es noch eine Reihe weiterer Spiele, die von so etwas profitieren, in Tests fällt RotTR ja mit der Performance auf den i5 Prozessoren auf. Nachteilen von SMT könnte man so direkt vorbeugen. Und wenn man 4 Kerne fürs Streamen haben will, würde man von einer fixen Zuweisung sicher auch was haben.

Ist da jemandem ein Programm bekannt, dass das automatisiert? Es braucht ja nur die Ausführung der .exe überwachen und dann im Task-Manager die Zuordnung automatisch einstellen.
 
Du kannst das Spiel über das Windows-Kommando "start" starten. Es kennt den Parameter Affinity Mask, und das ist wohl genau das was du suchst.

Auf der Kommandozeile kannst du dir per start /? die Hilfe zu dem Komando aufrufen. Dort ist auch beschrieben wie man die Affinity Mask anwendet.

Problematisch wäre es nur wenn du einen Launcher wie z.B. Steam nutzt um das Spiel zu starten. Aber bei Steam kann man (glaub ich) Spiele auch direkt über die EXE Datei starten und es reicht wenn Steam im Hintergrund läuft, oder?
 
Ja, solange Steam offen ist, geht der Start durch. Wenn ich das richtig verstehe, muss nur gewährleistet sein, dass die gestartete EXE nicht geschlossen und neugestartet wird. Steam benutze ich eh nur für wenige Spiele. Wobei Uplay da nochmal etwas speziell ist.
Kann ich die Windows-Kommandos in eine .bat-Datei packen? Dann müsste ich ja nur die Programm-verknüpfungen ersetzen.
 
Hmm, habe eben versucht, TexnicCenter über die Kommandzeile zu öffnen, und es kam nur ein neues cmd-Fenster, statt der richtigen grafischen Darstellung. Der Pfad war aber korrekt (keine Fehlermeldung).

Außerdem bin ich mir nicht sicher, wie die Kernzuweisung im Beispiel funktioniert:

Im folgenden Beispiel wird application1 auf den beiden niedrigen Prozessoren
des Knotens ausgeführt, während application2 auf den folgenden beiden
Prozessoren des Knotens ausgeführt wird. In diesem Beispiel wird davon
ausgegangen, dass der angegebene Knoten über mindestens vier logische
Prozessoren verfügt. Beachten Sie, dass die Knotennummer für diesen Computer
zu jeder gültigen Knotennummer geändert werden kann, ohne, dass die
Affinitätsmaske geändert werden muss.

start /NODE 1 /AFFINITY 0x3 application1.exe
start /NODE 1 /AFFINITY 0xc application2.exe

/NODE 1 ist klar, für mich unwichtig. Aber dass 0x3 den ersten zwei Threads entspricht und 0xc den Threads 3-4, erkenne ich so nicht. c enspricht einer 12 im Hexadezimalsystem
Ergänzung ()

Wenn ich eine TEX-Datei starte, öffnet sich TexnicCenter korrekt. Kann sonst gerade nichts testen.
 
Da steht AfinnitätsMASKE, das funktioniert so:

Bits für logischen Kern: 3 2 1 0
Maske: 2^3 2^2 2^1 2^0

Wenn du also Kern 0 und kern 1 nehmen möchtest ist das 2hoch0 + 2 hoch1 = 3, daher 0x3.
Bei Kern 2 und 3 ist da 2hoch3 + 2hoch2 = 8+4 = 12, daher 0xc.

Wenn du nur einen Kern, z.b. den Kern3 zuweisen möchtest wäre das 0x8 (2hoch3).
Alle 4 Kerne = 8+4+2+1 = 15, also 0xF.
 
Zuletzt bearbeitet:
Und versuch's mal für den Aufruf mit
Code:
START "" /B /AFFINITY 0xC "c:\app.exe"

0xC als Beispiel für Kerne 2 und 3.
 
@d2boxSteve Danke, das System kannte ich noch nicht

@Shagrath "" für den Titel des Fensters und dann /B für "ohne neues Fenster öffnen"? Klingt paradox, aber funktioniert. Lag allerdings am fehlenden "", wenn ich das in einen beliebigen Befehl einfüge (auch ohne /B), öffnet sich alles korrekt.
 
Gab auch ein Tool von TomsHardware mit dem man das für bestimmte Anwendungen festlegen kann, THG Task Assigner oder so ähnlich
 
So, konnte es endlich ausprobieren und kann bestätigen, dass AC Rogue mit der Maske
start "" /AFFINITY 0x5500 "Pfad\ACC.exe"
erfolgreich über Uplay gestartet wird und die Threads 8,10,12,14 zugewiesen bekommt. Werde das jetzt systematisch bei Spielen durchprobieren, wo es was bringt.
Die vorgeschlagenen Programme benötige ich also nicht.
 
Zurück
Oben