• Hallo zusammen, ich hoffe jemand kann mir meine Fragen diesbezüglich beantworten.

    Wenn ich ein Dual CPU PC mit W2K habe und z.B. Quake 2 oder Kingpin starten würde, kann ja nur eine CPU das Spiel berechnen.

    Bekanntlich können ja nur Spiele einen direkten Nutzen von SMP erzielen, wenn das Spiel dies wie z.B. bei Quake 3 explizit anbietet.

    Ist es aber möglich z.B. Die komplette benötigte CPU Power fürs Betriebssystem CPU 1 berechnen zu lassen und CPU 2 nur das Spiel berechnen zu lassen? Dadurch hätte man ja auch sekundär evtl. doch einen kleinen Nutzen auch für Spiele die nicht primär dafür vorgesehen wurden.

    Oder ist der Nutzen nur für Situationen von Vorteil, wenn mehre Anwendungen wie Film schauen + Voice Programm und andere CPU Freezer laufen?

    Wenn es doch möglich wäre, eine CPU nur das Spiel berechnen zu lassen und die andere den kompletten Rest, wie müsste man dies dem System bescheid geben?

    Gibt es dafür eine bestimmte Software?

    Einmal editiert, zuletzt von Sajuk (30. März 2022 um 00:17)

  • Das ist so nicht ganz richtig. Der Scheduler von Windows NT versucht immer, die Last möglichst zu verteilen. Der Prozessor(kern), der gerade weniger zu tun hat, bekommt mehr Arbeit. Somit profitieren z.B. auch Spiele von mehreren CPUs, die keinen parallelen Gameloop haben und klassisch alles abarbeiten.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

  • Oh - das finde ich mal interessant.

    Das ist genau das - was mich auch immer bewegt hat. Ich habe nie richtig verstanden wie das organisiert wird.

    Es ist aber richtig, das es generell NT (W2K usw...) sein muss.

    Andere Betriebssysteme wie 95 98/ME haben davon DUAL CPU keinen Vorteil, richtig?

    Was genau bedeutet "Gameloop"?

    - Backfire -

  • Ist z.B. wie beim Arduino. Da gibts die Funktion main(), die quasi die Schleife ist und der darin enthaltene Code immer wieder ausgeführt wird. Du kannst aber auch Programmcode in die Funktion setup() packen, die wird nur einmal ausgeführt. Ist die main() leer, so macht der Mikrocontroller nach der Intialisierung nichts.

    DOS stammt aus uralter Zeit und unterstützt kein SMP / SMT, somit ist Win9x ein eventuell zweiter Prozessor oder mehr völlig egal.

    Es soll aber ne Bastelei für SMP geben. Nutzt bloß niemand, weil diese Reihe von Betriebssystemen seit nunmehr bald 20 Jahren tot ist.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

  • Ein simpler Gameloop wäre zum beispiel

    start

    ist eine Pfeiltaste gedrückt?

    wenn ja gehe in diese Richtung

    wenn nicht, tue nichts

    schieße wenn Leertaste gedrückt wurde.

    Bewege Gegner

    gehe zu start

    Der Scheduler kann auch tasks von einer CPU zur anderen werfen, wenn eine davon plötzlich mehr Leistung braucht.

    Wenn du z.b. einen Wallpaper changer, Systemmonitoringtools (aida64 or whatever) einen MP3 Player am laufen hast kann sich dual cpu schon lohnen.

  • Kann man die Q3.exe nicht so patchen, dass die immer von CPU1 bespielt werden soll?

    Hab das früher auf unseren Servern auch nachträglich gemacht. Da lief auch noch uralte Software drauf, die mit mehr als einer CPU nichts anfangen konnte und immer nur auf CPU0 am werkeln war. Die habe ich dann auf CPU1 verwiesen.

    Ob das was in diesem Fall jedoch hilft, vermag ich nicht zu sagen. Bei mir half es, weil die zweite CPU immer nichts zu tun hatte. Auch Windows Server 2003 hat da nur bedingt klug Dinge verteilt.

  • Eine 2.te CPU kann schon von Nutzen sein, wenn die übrige einfach das abfängt, was das Betriebssystem im Hintergrund veranstaltet.

    Was die CPU-Zuweisung angeht, meine ich, ab XP konnte man im Task-Manager einen jedweden Prozess an irgend einen CPU-Kern festnageln. Ob das bei 2k oder NT auch so ging weiß ich nicht. Allerdings muss man das bei jedem Neustart des Prozesses wiederholen, womit man wieder ein Tool braucht.

    Unter Win7 habe ich ein Tool installiert, welches sich die CPU-Zuweisungen merkt. Alternativ gabs glaub ich auch sowas wie Process Lasso.

  • Was du willst nennt man "CPU Pinning". Ja, das kann in gewissen Fällen sinnvoll sein, aber meistens ist nur der Nutzer der, der glaubt er wisse es besser. In Wahrheit weiß es in nahezu allen Fällen eher der Thread Scheduler des Betriebssystems besser. ;) Also der Teil des Systemkerns, dessen Aufgabe es ist, Prozesse und Threads je nach Lastprofilen unterschiedlichen CPUs zuzuweisen.

    Für reguläre Nutzerprogramme kannst du CPU Pinning mittels Task Manager (taskmgr.exe) betreiben. Geh hierzu auf die Prozeßliste, dann Rechtsklick auf einen Prozeß, und dann im Kontextmenü den Menüpunkt zum Ändern der Prozessoraffinität selektieren.

    Hier kannst du wählen, auf welchen Prozessoren oder Kernen der Prozeß laufen darf. Hakst du hier z.B. nur CPU 0 an, dann wird der Prozeß auf CPU Nummer 0 verbannt, und bleibt auch dort bis er entweder terminiert oder du alles neu startest.

    Auf die Zuordnung von Kernelprozessen allerdings hast du keinen derartigen Einfluß. Also darauf wo der Systemkern selber rennt, oder wo dann Treiber laufen und dergleichen. Da ist mir keine Möglichkeit bekannt.

    Wenn du Prozesse von Anfang an weg immer mit einer bestimmten CPU-Affinität starten möchtest, kannst du dazu ein simples Batchskript nutzen. Folgendes z.B. startet ein Programm namens Quake.exe immer auf die erste CPU gepinnt:

    Code
    @ECHO OFF
    START /AFFINITY 1 Quake.exe

    Achtung aber! Der Wert den man hier der Option /AFFINITY folgen läßt ist eine hexadezimale Maske! Um die zu verstehen stellst dir deine CPU Liste Mal als binären Bitvektor vor. Sagen wir du hast 8 CPUs. Dann wäre die binäre Maske zur Nutzung aller 8: "11111111". Wenn du nur die erste willst wäre es "00000001". Nur die achte? "10000000". Hier muß man von rechts nach links lesen. Die ersten 4 Kerne sind gewollt (CPUs 0 bis 3)? "00001111". Wenn du die letzten 4 Kerne wolltest (CPUs 4 bis 7), dann wäre es: "1111000". Die Binärzahl rechnest dann mit calc.exe auf Hexadezimal um, in letztgenanntem Falle: F0.

    Auf einem Achtkernsystem mit Windows NT bindest deinen Prozeß ab Start also so auf Kerne 4, 5, 6 und 7: START /AFFINITY F0 Quake.exe.

    Der CPU Affinitäts-Bitvektor ist auf 32-bit Windows Systemen maximal 32 Stellen lang, auf älteren 64-bit Systemen dann entsprechend 64 Stellen lang. Das entspricht aus Performancegründen genau der Bitness der Systemarchitektur. Gibt auch modernere Systeme (Windows 10+, neueres Linux usw.), die dann auf 64-bit auf diese Effizienz verzichten, und z.B. einen 256 Bit langen Adressierungsvektor anbieten. Weil.... Threadripper und so. ;)

    Edit: bschicht86 war schneller. ;) Zur Ergänzung: Ja, der Windows 2000 Task Manager kann das auch schon.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Eine Frage, zu diesem Thema, welches ja schon zur Genüge hier diskutiert wurde, wird immer wieder Quake III aufgeführt. Was ist eigentlich der Hintergrund? Selbst auf einem kleinen AthlonXP mit einer GeForce2 läuft Quake mit allen Details in für damalige Verhältnisse krassen Auflösungen.

    Warum immer wieder Win2k, zwei Prozessoren und Quake III?

    Permanent aufgebaut:
    A7V133, Athlon 1,4GHz, 512MB, GeForce3 Ti200 128MB, SB Live! X-Gamer
    Für die LAN:
    TUSL2-C, PIII-S 1,4GHz, 512MB, GeForce2 GTS 32MB, 2x Monster II 12M, SB Live!
    TUSL2-C, PIII-S 1,4GHz, 512MB, GeForce2 GTS 32MB, 2x Monster II 12M, SB Live!
    CUSL2-C, PIII 933MHz, 512MB, G400 Max 32MB AGP, 2x 3D Blaster Voodoo² 12MB, SB Live!
    CUSL2-C, PIII 933MHz, 512MB, G400 Max 32MB AGP, 2x Monster II 8MB, SB Live!

  • Die Quake III SMP Implementierung is sowieso gefühlt für'n Arsch. Ich weiß nicht was die da threaden, aber eine fine-grain threaded AI hat das Spiel Mal sicher nicht. Wahrscheinlich ist das mehr so a la Supreme Commander, man lege die komplette AI in einen Thread, die Physik in den nächsten und den Sound vielleicht noch in einen zusätzlichen. Meistens hast du bei solchen Approaches (und das unterstelle ich Q3A Mal) das Problem, daß du einen Block hast, der ≥95% der CPU braucht. Und schwuppdiwupp hast du die großartige "Skalierung" von Q3A. Für'n Arsch.

    Ich wage daher zu behaupten: r_smp 1 ist für so gut wie gar nichts. Außer dafür gut zu sein, daß man sich an der "Sinnhaftigkeit" seines SMP Gaming Systems aufgeilen kann. ;) Da bringt das (automatische) Offloading der Betriebssystemkomponenten auf den zweiten CPU Kern wahrscheinlich noch mehr...

    Warum Win2k? Najo, weil's vielleicht das erste vernünftige Microsoft Betriebssystem war? Also das kein Schrotthaufen aus DOS und grandios kaputter Schicht drüber oder antikem, für Endverbraucher sinnlosem NT war? Windows 2000 war eine Revolution in so vielen Segmenten, das ist in kurzem unsagbar. Also vielleicht einfach deswegen, weil "clean und mächtig". By default nicht so scheissebunt wie XP und nicht so scheisseunbenutzbar wie NT4 und nicht so scheissefuckshittrashheap wie 9x?

    Ist natürlich alles nur meine subjektive Sicht auf die Dinge, das möge hier als angemerkt verbleiben. ;)

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Also wenn ich aufn Dualatin bei Q3A mit aktuellem Pointrelease SMP-Support einschalte, dann stürzt das Programm reproduzierbar ab.

    Das Spiel braucht SMP auch nicht wirklich...

    Und: Win2k ist und bleibt das beste Stückchen Software, das Microsoft jemals geschaffen hat.

    XP hat sich im Leerlauf der optimierten Optimierung der Festplatte und der Aktivierung gewidmet und alles andere später war nicht nur schrecklich bunt, sondern auch aufgebläht.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

    Einmal editiert, zuletzt von CryptonNite (31. März 2022 um 05:37)

  • Und: Win2k ist und bleibt das beste Stückchen Software, das Microsoft jemals geschaffen hat.

    :thumbup:

    Permanent aufgebaut:
    A7V133, Athlon 1,4GHz, 512MB, GeForce3 Ti200 128MB, SB Live! X-Gamer
    Für die LAN:
    TUSL2-C, PIII-S 1,4GHz, 512MB, GeForce2 GTS 32MB, 2x Monster II 12M, SB Live!
    TUSL2-C, PIII-S 1,4GHz, 512MB, GeForce2 GTS 32MB, 2x Monster II 12M, SB Live!
    CUSL2-C, PIII 933MHz, 512MB, G400 Max 32MB AGP, 2x 3D Blaster Voodoo² 12MB, SB Live!
    CUSL2-C, PIII 933MHz, 512MB, G400 Max 32MB AGP, 2x Monster II 8MB, SB Live!

  • Eine Frage, zu diesem Thema, welches ja schon zur Genüge hier diskutiert wurde, wird immer wieder Quake III aufgeführt. Was ist eigentlich der Hintergrund? Selbst auf einem kleinen AthlonXP mit einer GeForce2 läuft Quake mit allen Details in für damalige Verhältnisse krassen Auflösungen.

    Warum immer wieder Win2k, zwei Prozessoren und Quake III?

    Mit alten Dual Systemen kann es sogar langsamer werden. Bei den CPUs ohne eigenen Speichercoltroller und integrierter northbridge müssen sich die CPUs die Infrastruktur der Plattform teilen. Die Quake3 engine giert nach Speicherbandbreite und wenn man die durch eine zweite CPU verknappt, wird es dadurch eher langsamer.

  • Es is ja nicht so, daß die Systeme schlecht wären. Für die meisten Lasten reicht auch der FSB völlig aus, um eine ordentliche, oft nahezu lineare Skalierung hinzukriegen mit den Dualbrettern. Wenn die Software das auch sauber kann. Das sind normal schon eher Sonderfälle wo das richtig schlecht geht. Also damit meine ich die Fälle, wo wirklich der FSB/RAM bremsen und nicht der unzureichend optimierte Code des jeweiligen Programms. ;)

    Ich meinte nur, daß der SMP Modus von Quake III Arena für nichts ist. Das Spiel is echt einfach kein Maßstab für Dual-CPU Nutzung unter Windows 2000.

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

  • Stimmt.

    Mit nem Dualatin und ner halbwegs modernen Grafikkarte kann man recht flüssig Crysis zocken.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300