100% CPU Auslastung beim "Nichtstun"?



  • 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



  • NOPs sind böse!!! 😮

    Ansonsten wär' ich für "weniger"... 🕶 😉



  • @junix:
    Ja, das war jetzt nicht ernst gemeint. Die CPU erzeugt wahrscheinlich bei allen normalen Befehlen etwa gleich viel Wärme. Und diesen "Sparbefehl" darf ehh nicht jeder ausführen. Ein Spiel hat aber auch gar keine Grund dazu, die werden ja nicht dafür gemacht, den Stromverbrauch zu senken.

    Bye, TGGC \-/



  • TGGC schrieb:

    Die CPU erzeugt wahrscheinlich bei allen normalen Befehlen etwa gleich viel Wärme.

    ...da ja bei jedem Befehl immer genau darauf geachtet wird, dass genau gleich viele Transistoren durchgeschaltet werden (...)

    TGGC schrieb:

    Und diesen "Sparbefehl" darf ehh nicht jeder ausführen.

    Nö, den führt ausschliesslich das OS aus nehm ich mal an...

    TGGC schrieb:

    Ein Spiel hat aber auch gar keine Grund dazu, die werden ja nicht dafür gemacht, den Stromverbrauch zu senken.

    Natürlich ist es nicht dazu da den Stromverbrauch zu senken... aber trotzdem halte ich es bei Software immernoch für ein Designziel, nicht einfach weils hald da ist unnötig verschwenderisch zu sein...

    -junix



  • @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.

    Das glaube ich aber schon. Wenn ich bei 100ms Logiktick nur alle 2sec die KI aufrufe, warum sollte ich das bei 10ms alle 0.2 sec machen? Das kannst du auf alle komplexeren Vorgänge übertragen. Die einfachen Vorgänge, wie dass sich eine Einheit einen Schritt weiterbewegt, mache ich öfter, aber das interpolierst du ja auch.

    Du musst nicht synchronisieren? Das interressiert mich jetzt mal. Ich hoffe, wir sind uns so weit einig, dass bei jedem "echten" Logikframe ein bestimmter Zustand herrschen muss und zwar ein reproduzierbarer Zustand.
    Jetzt interpolierst du (das könntest du btw. auch ein bisschen genauer ausführen) und hast irgendwelche schwammigen Zwischenwerte mit Rundungsfehler etc. Warum musst du jetzt bitte nicht synchronisieren?
    Denk mal daran, wie ein Replay in Warcraft funktioniert. Das Spiel ist absolut reproduzierbar aufgrund ein paar Userinputs. Du musst deine schwammigen Werte irgendwie korrigieren.

    Nur eben, das bei so vielen Logikticks evtl. keine Zeit mehr fürs Rendern da ist. Deswegen mache ich eben weniger.

    Das sehe ich anders, weil ich nicht wirklich mehr Arbeit habe (auf jeden Fall nicht mehr als du mit Interpolation). Das musst du mir erstmal nachweisen. :p


Anmelden zum Antworten