100% CPU Auslastung beim "Nichtstun"?
-
@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
-
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