100% CPU Auslastung beim "Nichtstun"?



  • @Sgt. Nukem:
    Ich würde eher sagen, sie schrauben runter um die Auslastung zu erhöhen. Je höher die Auslastung, um so weniger Verlust. Das diese Automatik bei Spielen versagt, ist klar. Da muss man schon manuell sagen: mach mal halb schnell, ich möchte grad sparen.

    @Optimizer:
    a) du kannst dir da nicht sicher sein
    b) der Idle process würde die Zeit auch bloß in einer Schleife "verwarten"
    c) ich warte nicht, sondern rendere den nächsten Frame
    D.h. deine Methode verschwendet Rechenleistung, meine nicht. Immer noch nicht alles klar?

    Noch ein Positivbeispiel: OSR!

    Bye, TGGC \-/



  • Sgt. Nukem schrieb:

    2 ms reichen da??? 😮

    Eigentlich sogar eine. Läuft butterweich. In der neuen Version dann hab ich nen Framelock bei 100.

    Optimizer schrieb:

    Dann von mir das Negativbeispiel: Anno 1503 !
    🙄

    Anno1503 ist überhaupt eines der technisch schlechtesten Spiele, die ich mir gekauft hab. Genauso wie Battlefield Vietnam (hab ich mir zum Glück nicht gekauft, sondern nur mal ausgeliehen). Und das passt dann schon richtig, dass die 100% fressen.

    Optimizer schrieb:

    Je nachdem _muß_ er ja nicht warten, sondern rendert soviel fps wie geht!
    Bei festem Logiktick für Physik etc. natürlich nicht.

    Genau. Wenn ich mehrmals rendere, hab ich bestenfalls noch eine flüssigere Mausbewegung, aber sonst ändert sich das Bild nicht. Und 100 fps reichen. 😉

    @TGGC:

    a) das kannst du auch nicht, wenn du in ner Endlosschleife rumläufst. Das Betriebssystem kann dir trotzdem die Kontrolle entreißen, so dass du nicht punktgenau wieder startest. Probier es doch einfach mal aus, es funktioniert mit Sleep wunderbar.
    b) aber nicht mit 100% Auslastung
    c) ja, bei einem Spiel, wo du keine festen Logiktics brauchst und die Bewegungen beliebig skalieren kannst, ist das sicherlich sinnvoll.



  • a) will ich ja auch garnicht
    b) Klar, insgesamt wird ehh immer 100% ausgelastet, oder soll die CPU mal eben stillstehen?
    c) Bei welchem Spiel sollte ich denn nicht zwischen 2 Logikticks interpolieren? Und was bringt es, die Zeit abzugeben? Die Rechenzeit nutzt ehh keiner mehr aus.

    Bye, TGGC \-/



  • a) aber ich, da ich feste Logikframes brauche
    b) lass es mich anders umschreiben: Die CPU wird weniger heiss, verbraucht weniger Strom und im Taskmanager geht die Anzeige für die CPU-Auslastung runter. 🙄 Du weisst genau, was ich meine.
    c) Bei jedem Spiel, wo ein Spiel bei gleichen Bedingungen auf jedem Rechner absolut gleich ablaufen muss /rekonstruierbar sein muss (z.B. für Replays).
    Du musst da mal differenzieren zwischen einem Action Spiel wie euer MiniCan, wo ein paar wenige Objekte verwaltet werden und der Server gemütlich für alle Objekte ständig Positionsupdates senden kann
    und
    einem Strategiespiel, wo der Server es sich höchstens noch erlauben kann, User-Inputs zu versenden und alle Clients daraus die selbe Spielsituation konstruieren können müssen.
    Oder eben mal ein Replay abspeichern wie in WC3 mit gerade mal 40kb Größe für eine halbe Stunde Spiel.



  • TGGC schrieb:

    b) der Idle process würde die Zeit auch bloß in einer Schleife "verwarten"

    Knapp daneben... in der Idle-Schleife wird eben die CPU z.B: mit speedStep runtergetaktet, bis die Power wieder gebraucht wird.

    -junix



  • Wie ich sagte, wenn man zum Sparen was runtertakten will, dann funktioniert diese Automatik nicht. Damit die CPU weniger heiss wird, muss eben nicht die Auslastung (also wieviel der vorhandenen Leistung genutzt wird) runter, sondern die Leistung an sich herabgesetzt werden. Die Auslastung ist letztendlich immer 100%.

    Und warum sollte ich nicht zwischen den diskreten Logikschritten Frames interpolieren können? Dadurch läuft doch immer noch alles rekonstruierbar ab. Schalt doch mal bei Quake die Interpolation zwischen den Logikschritten ab, na dann schönes Spielen... W3 macht es sicher auch so, das ruckelt ja auch je nach Rechner mehr oder weniger.

    Bye, TGGC \-/



  • @sgt nukem und sein "Maus" problem:
    und wenn man sich etwas mit directx auskennt weis man, dass es eigentlich für eine 8 tasten maus reicht, nur EINEN EINZIGEN Parameter in EINER Funktion zu ändern!
    also da sag ich mal: an der falschen stelle gespaart...andererseits: wer braucht schon 8 Tasten an der Maus? 😃



  • @TGGC: Fakt ist: Leg Dich in Deinem Loop kurz schlafen, die Auslastung sinkt, und Dein Laptop wird weniger Strom fressen. Mein Laptop-Lüfter ist da gleicher Meinung wie ich.. 😉
    Ne lustige Diskussion.. Soll n'Game wirklich dafür ausgelegt sein, möglichst stromsparend zu sein?.. 🤡 Ist doch eh egal, ob n'Game 100% auslastet oder 50%.. Manno..



  • @TGGC: Ich glaube, 100fps sind für ein Strategiespiel ausreichend, dann kann ich mir den Aufwand mit dem Interpolieren und der Fallunterscheidung, ob jetzt minimiert ist, oder nicht, sparen.

    ... Die Auslastung ist letztendlich immer 100%.

    Falsch. Punkt. Ich bin einer der unglücklichen Besitzer eines Laptops mit Desktop-CPU (also keine Mobile Technologie) und ich kenne den Unterschied zwischen ausgelastet und nicht ausgelastet sehr genau.

    Schalt doch mal bei Quake die Interpolation zwischen ...

    Absolut nicht vergleichbar, da völlig andere Situation. Und WC3 hat IMHO einen Framelock bei 75, zumindest habe ich nie mehr gehabt (bei dem Login-Screen zum Battle.net ist es am höchsten, da sieht man ja wirklich nur ein flaches Tor). Und bevor du glaubst, es ist VSync, mein TFT zeigt 60Hz an.

    durito schrieb:

    Ne lustige Diskussion.. Soll n'Game wirklich dafür ausgelegt sein, möglichst stromsparend zu sein?.. 🤡 Ist doch eh egal, ob n'Game 100% auslastet oder 50%.. Manno..

    Das mit dem Stromsparen sollte mehr so ein Troll-Argument sein. 🙂
    Aber ich finde es halt einfach geil, wenn ein Spiel butterflüssig läuft und die Auslastung ist niedrig. Ich muss doch nicht mit Gewalt CPU-Zeit fressen und sinnlos verbraten. Es macht letztendlich keinen Unterschied, außer vielleicht, man lässt noch was im Hintergrund arbeiten.
    Wenn man einen Laptop hat, denkt man halt einfach an sowas. Es ist ja nicht so, dass ich Kompromisse eingehe... ich hole mir schon die Zeit, die ich brauche.



  • Ohh, der Aufwand für diese Fallunterscheidung, ein if per Frame... is ja noch schlimmer als sqrt. 😎

    Optimizer schrieb:

    ... Die Auslastung ist letztendlich immer 100%.

    Falsch. Punkt. Ich bin einer der unglücklichen Besitzer eines Laptops mit Desktop-CPU (also keine Mobile Technologie) und ich kenne den Unterschied zwischen ausgelastet und nicht ausgelastet sehr genau.

    Es ist richtig, und du hast ja auch gar kein Argument das es falsch wäre. Der witz ist nur, lastet man die CPU mit speziellen Befehlen aus, so kühlt sie ab.

    Optimizer schrieb:

    Schalt doch mal bei Quake die Interpolation zwischen ...

    Absolut nicht vergleichbar, da völlig andere Situation.

    Absolut vergleichbar, da genau gleiche Situation. Interpolation zwischen Logikticks.

    Optimizer schrieb:

    Und WC3 hat IMHO einen Framelock bei 75, zumindest habe ich nie mehr gehabt (bei dem Login-Screen zum Battle.net ist es am höchsten, da sieht man ja wirklich nur ein flaches Tor). Und bevor du glaubst, es ist VSync, mein TFT zeigt 60Hz an.

    Eben, du hattest nie mehr. Aber weniger! Interpolation zwischen Logikticks.

    Ist bei dir ein Logiktick eigentlich immer 0.01s? Also ich hätte in einem RTS mindestens 0.1s gemacht!

    @Durito: Ich sag ja gar nicht, das ein Spiel 100% der Rechenzeit verbrauchen soll. Nur das Sleep()en keinen Sinn hat. Das sind zwei paar Schuhe.

    Bye, TGGC \-/



  • TGGC schrieb:

    Optimizer schrieb:

    ... Die Auslastung ist letztendlich immer 100%.

    Falsch. Punkt. Ich bin einer der unglücklichen Besitzer eines Laptops mit Desktop-CPU (also keine Mobile Technologie) und ich kenne den Unterschied zwischen ausgelastet und nicht ausgelastet sehr genau.

    Es ist richtig, und du hast ja auch gar kein Argument das es falsch wäre. Der witz ist nur, lastet man die CPU mit speziellen Befehlen aus, so kühlt sie ab.

    Ok, Held, erklär mir mal den Physikalischen Grund, wieso die CPU Hitze entwickelt...

    -junix



  • otze schrieb:

    @sgt nukem und sein "Maus" problem:
    und wenn man sich etwas mit directx auskennt weis man, dass es eigentlich für eine 8 tasten maus reicht, nur EINEN EINZIGEN Parameter in EINER Funktion zu ändern!

    Eben... 🙄

    Aber auch so Sachen, daß man BACKSPACE nicht belegen kann, weil das der "Einstellung-löschen-Knopf" ist, oder es keine Unterscheidung zwischen ALT GR und STRG rechts gibt! Absolut einfach mit DirectInput zu lösen... 🙄

    Bzgl. User-Interface müssen auch (oder vor allem?) kommerzielle Spiele noch viel lernen...

    Optimizer schrieb:

    Ich bin einer der unglücklichen Besitzer eines Laptops mit Desktop-CPU (also keine Mobile Technologie) und ich kenne den Unterschied zwischen ausgelastet und nicht ausgelastet sehr genau.

    Kenn' ich... 😃 *föhnansohrhalt* 🕶



  • TGGC schrieb:

    Es ist richtig, und du hast ja auch gar kein Argument das es falsch wäre. Der witz ist nur, lastet man die CPU mit speziellen Befehlen aus, so kühlt sie ab.

    Das ist mir eigentlich egal, was das für Befehle sein sollen. Natürlich steht die CPU nicht wirklich still. Das ändert aber nichts an der Tatsache, dass die CPU-Auslastung, die ich mit Sleep() verringern kann, ein Gradmesser für Stromverbrauch und Wärmeentwicklung ist. Du brauchst jetzt auch CPU Auslastung nicht auf einmal anders definieren, weil der Ausgangspunkt Sleep() war.

    Absolut vergleichbar, da genau gleiche Situation. Interpolation zwischen Logikticks.

    Nein, eben nicht. Da gab es sogar mal einen Thread, der besagt, dass in Q3 bei höherer Framerate Manöver möglich sind, die sonst nicht möglich sind. Deshalb wird in Doom3 (war es Doom3?) die Framerate auf 60 fixiert und alles, was darüber hinausgeht, rendert identische Frames mehrmals.

    Optimizer schrieb:

    Eben, du hattest nie mehr. Aber weniger! Interpolation zwischen Logikticks.

    Häh? Wenn die doch so toll interpolieren, warum hab ich dann nicht 982436 Frames? Warum genau 75? Das man weniger haben kann ist doch logisch, das hat doch damit gar nichts zu tun.

    Ist bei dir ein Logiktick eigentlich immer 0.01s? Also ich hätte in einem RTS mindestens 0.1s gemacht!

    Ja, und warum?



  • junix schrieb:

    Ok, Held, erklär mir mal den Physikalischen Grund, wieso die CPU Hitze entwickelt...

    Schätze mal durch die Schwingung der Atome, wenn da so'n paar Elektronen drangestossen sind. 😎

    Bye, TGGC \-/



  • Und nu erklär welcher Faktor die Menge der in Wärme umgewandelte Energie bestimmt... darfst gerne von der Atomebene auf die abstraktere, elektrische Ebene wechseln für deine Erklärungen.

    -junix



  • Das ändert aber nichts an der Tatsache, dass die CPU-Auslastung, die ich mit Sleep() verringern kann, ein Gradmesser für Stromverbrauch und Wärmeentwicklung ist. Du brauchst jetzt auch CPU Auslastung nicht auf einmal anders definieren, weil der Ausgangspunkt Sleep() war.

    Nehmen wir an, du hättest recht. Wo ist der Grund, in einem Spiel, das im Vordergrund und Vollbild läuft, zu Sleep()en? Hab mir jetzt sagen lassen, Stromsparmodus an 'nem Laptop kann auch manuell aktiviert werden.

    Nein, eben nicht. Da gab es sogar mal einen Thread, der besagt, dass in Q3 bei höherer Framerate Manöver möglich sind, die sonst nicht möglich sind.

    Das stimmt (zwar nicht höhere, sondern spezielle fps Zahlen), aber was hat das hiermit zu tun? a) gilt das nur für dich lokal, von allen anderen bekommst du ja garnicht so viele Snapshots b) kannst du seit v1.27 für alle Spieler den gleichen Logiktick erzwingen, unabhängig von der fps

    Häh? Wenn die doch so toll interpolieren, warum hab ich dann nicht 982436 Frames? Warum genau 75? Das man weniger haben kann ist doch logisch, das hat doch damit gar nichts zu tun.

    Aber auch bei weniger muss du doch interpolieren. Ein Logiktick dauert 1/75 s. Wenn es aber mit 60 fps läuft, brauchst du die Daten bei 1/60 s, und das liegt ja zwischen 1/75 und 2/75 oder nich?

    Was passiert, wenn dein Logiktick nicht in 0.01s berechnet werden kann? Z.b. dauert darstellen 0.03s und Logik berechnen 0.02s. Also schon so 20fps, was für RTS ja reichen könnte. Nur mit deinem Logiktick geht das natürlich nicht. Oder hast du 'ne Methode, das die Berechnung nie solange dauern kann?

    @junix: Die Menge der ungenutzten Leistung. Also muss man die durch ganz viele Befehle alles verbrauchen.

    Bye, TGGC \-/



  • Nehmen wir an, du hättest recht. Wo ist der Grund, in einem Spiel, das im Vordergrund und Vollbild läuft, zu Sleep()en?

    Gibt es denn irgendeinen Grund, es nicht zu tun?

    Was passiert, wenn dein Logiktick nicht in 0.01s berechnet werden kann? Z.b. dauert darstellen 0.03s und Logik berechnen 0.02s.

    kleinerer logiktick != mehr Arbeit

    Und wenn die Arbeit nicht rechtzeitig bewältigt werden kann, egal bei welchem tick ist sowieso alles zu spät. Natürlich kann es mal passieren, dass 10ms nicht ausrechnen, dann muss die zeit in den nächsten ticks wieder reingeholt werden. Das ist jedoch unabhängig von der Größe des ticks.
    Und ich wage zu behaupten, dass du durch das Interpolieren und wieder synchronisieren mit einem festen Logikschritt (weil das interpolieren ist ja nicht logisch genau) mehr Arbeit zu bewältigen hast als sonst. Die Logik von einem Strategiespiel ist ja auch nochmal ein Ideechen komplexer.

    Und wie lang die Grafik dabei dauert zum rendern hat damit gar nichts zu tun. Wenn man mit der Zeit hinterherhängt, muss man halt weniger frames rendern. Berechnen muss man sie natürlich trotzdem, ist ja klar. Ein tick von 0.01s heisst ja nicht, dass ich immer 100fps haben MUSS. Wenn die Kiste das nicht hergibt, sind es halt weniger.



  • TGGC schrieb:

    Das ändert aber nichts an der Tatsache, dass die CPU-Auslastung, die ich mit Sleep() verringern kann, ein Gradmesser für Stromverbrauch und Wärmeentwicklung ist. Du brauchst jetzt auch CPU Auslastung nicht auf einmal anders definieren, weil der Ausgangspunkt Sleep() war.

    Nehmen wir an, du hättest recht. Wo ist der Grund, in einem Spiel, das im Vordergrund und Vollbild läuft, zu Sleep()en? Hab mir jetzt sagen lassen, Stromsparmodus an 'nem Laptop kann auch manuell aktiviert werden.

    Jo, wobei man das bei einigen Zocks (z.B. Enclave) auch tun sollte, da auch die Abfrage-Genauigkeit des HPC runtergeht im Energiesparmodus, und Enclave z.B. sauschnell wird... 🤡



  • @Optimizer:
    Willst du sagen, die Zeitkomplexität deines Logiktick hängt nur linear von der Länge dieses ab? Das glaube ich nicht.

    Wieder synchronisieren mit der Logikzeit muss man nicht.

    Nur eben, das bei so vielen Logikticks evtl. keine Zeit mehr fürs Rendern da ist. Deswegen mache ich eben weniger. Aber evtl. hast du ja eine Methode um die Rechenzeit pro Logikick zu beschränken.

    @Sgt. Nukem:
    Hey, nicht cheaten. 😎

    Bye, TGGC \-/



  • TGGC schrieb:

    @junix: Die Menge der ungenutzten Leistung. Also muss man die durch ganz viele Befehle alles verbrauchen.

    Würd ich so wohl weniger behaupten. Ist es nicht viel eher so, dass die Verlustleistung von der Zahl und der komplexität der Rechenoperationen abhängt?
    Oder anders gefragt: Produziert ein nop vermutlich mehr, gleichviel oder weniger Verlustleistung als eine Komplexe Rechenoperation in der ALU oder der FPU?

    -junix


Anmelden zum Antworten