Seite 1 von 1

WINE ohne Multi Threading compilieren

BeitragVerfasst: 14.04.2011, 09:21
von ReCon
Hallo zusammen,

ich habe hier erneut ein "Problem" mit dem compilieren von WINE.

Ich baue seit einiger Zeit einige Pakete wo spezielle patches für WINE enthalten sind um diverse Spiele damit zum Laufen zu bekommen. An für sich klappt das eigentlich ganz gut, jedoch habe ich hier einen Sonderfall. Dieser Sonderfall ist ein Spiel, welches eine enorme Leistungssteigerung erreicht, wenn ich den Prozess des Spiels lediglich auf eine CPU festlege, z. B. mit taskset unter Linux:

Code: Alles auswählen
taskset -p 1 PID


Da das Hauptspiel über eine Art Launcher gestartet wird, muss dieser Aufruf jedes Mal erfolgen (ich kann nicht direkt am Start die Affinität festlegen). Außerdem baue ich diese Pakete auch für Apples OS X (auf meinem MacBook) und da OS X etwas wie taskset nicht hat (es existiert tatsächlich auch keine Alternative), ist es mit OS X gleich mal gar nicht möglich die Affinität auf einen Core zu schieben.

Kann ich also WINE so compilieren, dass es quasi dazu "gezwungen" wird auf lediglich einem Core zu laufen? Lässt sich das Multi Threading deaktivieren (z. B. per ./configure --disable-multi-core o.ä.)?

Ich Danke schon mal im Voraus :)

Grüße
ReCon

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 14.04.2011, 18:41
von LinuxDonald
Mal so nebenbei gefragt seit wann untersützt Wine multithreading?

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 15.04.2011, 12:41
von ReCon
Zu dieser Frage kann ich nur auf den Doc Eintrag von WINE verweisen: http://www.winehq.org/docs/winedev-guide/threading

Ohnehin könnte ich mir dann aber auch nicht erklären, warum es bei manchen Spielen (League of Legends, Titan Quest und auch Stracraft II), einen ordentlichen Performance Boost gibt, wenn der WINE .exe Prozess fest auf einen Core gelegt wird, wenns den nicht am Multi Threading liegt?!

Grüße
ReCon

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 15.04.2011, 23:35
von LinuxDonald
Vielleicht kann wine an sich auf mehreren Kernen laufen? Und wenn man es einem Kern zuweißt laufen vielleicht alle wine Prozesse halt nur auf dem einen?

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 01.07.2011, 00:03
von cool j
Ich greife diesen Thread noch mal auf, da ich für cs nur einen core laufen lassen will. Dadurch kommt es erst später zu einem freeze...

Die einzige mir bekannte Möglichkeit ist zur Zeit nur, die anderen cores temporär zu deaktivieren. Wäre wohl auch für dich ein Workaround.

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 01.07.2011, 07:44
von ReCon
@cool j: Du hast die Möglichkeit den Prozess der CS.exe auf einen Core zu beschränken, anstatt "alle" dezuaktivieren:

taskset -p 1 PID


wobei du "PID" natürlich an die Prozessnummer der CS.exe anpassen musst. Das kannst du entsprechend mit Hilfe von

ps ax


feststellen.

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 01.07.2011, 13:07
von cool j
Danke ReCon. Ich frage mich gerade, ob man dann nicht eher wine auf eine cpu zwingen sollte, CS selbst unterstützt ja keine multi-cores.
Die Freezes treten wohl deswegen auf, dass manche Berechnungen zu schnell durchgeführt werden und das Spiel dann asynchron zu anderen Mitspielern läuft (im Internet).
Muss ich noch mal ein wenig testen..

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 02.07.2011, 18:03
von DawnCrow
das multiprocessing wird vom betriebssystem erledigt(linux, bsd, macos, ...). Wine startet nur threads, diese threads sinnvoll zu verteilen ist nicht bestandteil von Wine's aufgaben, kann also nicht rauskompiliert werden.

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 06.07.2011, 19:18
von beko
Ich hatte für sowas mal einen extra Kernel am Start, den ich beim Booten ausgewählt habe. Das betraf aber auch native Spiele (wie ut2003).

Ob und wie man sowas unter Mac bewerkstelligen kann weiß ich leider auch nicht.

Re: WINE ohne Multi Threading compilieren

BeitragVerfasst: 06.07.2011, 23:02
von ChemicalBrother
Also wenn ich Command & Conquer: Alarmstufe Rot in Wine spielen will, muss ich es explizit nur auf einem Kern laufen lassen. Das funktioniert mit so nem Tool und der Befehl lautet:

Code: Alles auswählen
schedtool -a 0x1 -e wine RA95.exe


schedtool zwingt wine dazu, nur auf einem Kern zu laufen. Ist auch aus dem WineHQ-AppDB.

WineHQ-AppDB zu C&C: Alarmstufe Rot