WINE ohne Multi Threading compilieren

Alles rund um WINE, Cedega & CrossOver Games

Moderator: Moderator

WINE ohne Multi Threading compilieren

Beitragvon ReCon » 14.04.2011, 09:21

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
Benutzeravatar
ReCon
 
Beiträge: 1273
Registriert: 23.06.2006, 22:02
Lizenz: GPL
Distribution: openSUSE 13.1
Kernelversion: 3.11.6-4-desktop

Re: WINE ohne Multi Threading compilieren

Beitragvon LinuxDonald » 14.04.2011, 18:41

Mal so nebenbei gefragt seit wann untersützt Wine multithreading?
Arch Linux bietet alles was das Linux Herz begehrt :)

Bild
Benutzeravatar
LinuxDonald
 
Beiträge: 831
Registriert: 23.03.2008, 16:34
Wohnort: Tangermünde
Lizenz: CC
Distribution: Arch Linux
Kernelversion: 4.10.8

Re: WINE ohne Multi Threading compilieren

Beitragvon ReCon » 15.04.2011, 12:41

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
Benutzeravatar
ReCon
 
Beiträge: 1273
Registriert: 23.06.2006, 22:02
Lizenz: GPL
Distribution: openSUSE 13.1
Kernelversion: 3.11.6-4-desktop

Re: WINE ohne Multi Threading compilieren

Beitragvon LinuxDonald » 15.04.2011, 23:35

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?
Arch Linux bietet alles was das Linux Herz begehrt :)

Bild
Benutzeravatar
LinuxDonald
 
Beiträge: 831
Registriert: 23.03.2008, 16:34
Wohnort: Tangermünde
Lizenz: CC
Distribution: Arch Linux
Kernelversion: 4.10.8

Re: WINE ohne Multi Threading compilieren

Beitragvon cool j » 01.07.2011, 00:03

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.
cool j
 
Beiträge: 113
Registriert: 17.06.2008, 17:50

Re: WINE ohne Multi Threading compilieren

Beitragvon ReCon » 01.07.2011, 07:44

@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.
Benutzeravatar
ReCon
 
Beiträge: 1273
Registriert: 23.06.2006, 22:02
Lizenz: GPL
Distribution: openSUSE 13.1
Kernelversion: 3.11.6-4-desktop

Re: WINE ohne Multi Threading compilieren

Beitragvon cool j » 01.07.2011, 13:07

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..
cool j
 
Beiträge: 113
Registriert: 17.06.2008, 17:50

Re: WINE ohne Multi Threading compilieren

Beitragvon DawnCrow » 02.07.2011, 18:03

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.
BildBild

Linux: It is now safe to turn on your computer.
Benutzeravatar
DawnCrow
 
Beiträge: 327
Registriert: 28.02.2009, 17:05
Wohnort: Unterfranken
Lizenz: LGPL
Distribution: Ubuntu 11.04 64-Bit, Mint 14
Kernelversion: 3.5

Re: WINE ohne Multi Threading compilieren

Beitragvon beko » 06.07.2011, 19:18

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.
Benutzeravatar
beko
 
Beiträge: 595
Registriert: 25.01.2008, 21:07
Lizenz: GPL

Re: WINE ohne Multi Threading compilieren

Beitragvon ChemicalBrother » 06.07.2011, 23:02

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
Benutzeravatar
ChemicalBrother
 
Beiträge: 5332
Registriert: 21.08.2006, 21:17
Wohnort: Langen
Lizenz: CC
Distribution: Arch Linux
Kernelversion: 6.0


Zurück zu Spiele unter WINE, Cedega & CrossOver Games

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

cron