Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 65 Antworten
und wurde 1.526 mal aufgerufen
 Fehlermeldungen
Seiten 1 | 2 | 3 | 4 | 5
schwaller Offline



Beiträge: 48

08.07.2009 23:10
CPU Auslastung antworten

hidihei

habe 99seconds auch mal auf ein notebook mit win7 installiert.

das ganze funktioniert soweit - bis auf die tatsache, das ich dann selbst im menue (wenn sonst nichts gemacht wird) eine cpu-auslastung von 100% habe.

wäre gut, wenn das anders wäre :)

wenn weitere daten benötigt werden - einfach fragen.
(selbst fernzugriff wäre möglich, da das eh ein testsystem ist)

bin da zu allen schandtaten bereit, um dem verhalten entgegenzuwirken.

ThWit Offline




Beiträge: 335

09.07.2009 15:50
#2 RE: CPU Auslastung antworten

Hallo Schwaller

>bin da zu allen schandtaten bereit, um dem verhalten entgegenzuwirken.

Da ich 99 Seconds auf meinem Notebook (98SE/933 Mhz) entwickelt habe und eine CPU Last
von über 80% den kleinen Lüfter aktivieren würde, war ich eigentlich stets um eine
möglichst geringe CPU Last bemüht. Diese könnte noch wesentlich geringer sein, wenn
es nicht so (exotische) Computer, wie z.B. den meiner Partnerin gäbe.
Dort führt nur ein synchronisierter Bildaufbau, also mit warten auf den Vertical Flip,
zu einem flimmerfreien Bild. Auf meinem Rechner daheim und auf meinem Notebook (sowie
auf vielen anderen Systemen) funktioniert auch der nicht synchronisierte Retrace sehr gut.
Da ich aber 3 Meldungen über ein flimmerndes Bild bekommen habe, bleibt es erstmal beim
synchronisierten Retrace.

Im Prinzip sieht eine Programmschleife so aus:
Hintergrundgrafik auf den Backbuffer setzen
Gerade benötigte Grafiken anzeigen
Berechnungen und Abfragen
Warten auf den Vertical Flip
60 x pro Sekunde eine bestimmte Zeit (zwischen 1 und 16 Millisekunden) an Windows übergeben

Da spielt es eigentlich keine Rolle, ob im Menü nur auf einen Mausclick gewartet wird, oder
hunderte von Steinen bewegt werden. Der Knackpunkt ist der Zeitpunkt für das nächste Frame.
Bei 60 FPS (Bildern in der Sekunde) bleibt dem Rechner also eine Zeit von (1000:60) 16,67
Millisekunden für ein Frame. Auf meinem "betagten" Notebook braucht 99 Seconds maximal 3-4
Millsekunden für all seine Aufgaben und Berechnungen. Die restlichen 12,67 Millisekunden
würde es mit dem warten auf den Vertical Flip verbraten und eine CPU Last von 100% erzeugen,
würde ich nicht eine bestimmte Zeit anderen Prozessen zur Verfügung stellen.

Der Standardwert dieser Zeitspanne beträgt 5 Millisekunden und wird erhöht, wenn 60 Bilder
pro Sekunde dargestellt werden konnten, bzw erniedrigt wenn weniger als 55 Bilder erzeugt
werden konnten. Auf meinem Notebook liegt dieser Wert zwischen 10 und 12 und ist natürlich
auch abhängig von den anderen laufenden Prozessen auf dem System. Auf dem XP Rechner meiner
Partnerin wird der Wert 5 fast nie überschritten, kein Wunder bei 50 Hintergrundprozessen.

Ich habe grad mal wieder mit dem Process-Explorer von Sysinternals getestet und komme
auf eine Last von 50% im Screen-Modus sowie 35-55% im Fenstermodus. Allerdings ist mein
Programm derzeit auch nicht für Vista & Co optimiert. Das wird vermutlich auch der Grund
für deine hohe CPU Last sein. Bei mir läuft zwar eine Compilation mit Vista Optimierung,
allerdings nur mit hoher CPU Last. Im Screen-Modus schafft er gerade mal 50 Bilder pro
Sekunde, es bleibt also kaum Zeit für andere Prozesse. Im Fenstermodus sind die Werte
noch schlechter, gerade mal 32 - 35 Bilder werden dort pro Sekunde erstellt.
Bei mir verhält es sich also genau anders herum. Im Info-Bereich wird nun ja die aktuelle
Uhrzeit angezeigt, ich kann die beiden Funktionen FPS: (Bilder pro Sekunde) sowie die Zeit,
die Windows für seine Aufgaben zurück bekommt (DEL:) aus der Developer Anzeige neben der
Uhrzeit anzeigen lassen. Aktiviert wird dies mit, sagen wir mal, <F10>.

Es wird bei der kommenden (offiziellen) Version 0.96 auch wieder eine Exe mit Optimierungen
für XP, Vista & Co geben. Damit sollte deine "moderne" Hardware wesentlich besser laufen
und ihre Zeit sinnvoller verwenden können. Da ich für den Jokerflash noch 2 neue Sounds
erstellt habe, werde ich nachher das Testpaket aktualisieren und auch eine exe mit Vista
Optimierung beifügen. Auch die neue, fast fertige, Spielanleitung lege ich zur Ansicht bei.



Thomas


schwaller ( Gast )
Beiträge:

11.07.2009 13:45
#3 RE: CPU Auslastung antworten

so - habe mit der aktuellsten version mal getestet

zunächst - die soundeffekte sind klasse!

dann zum eigentlichen - diesmal ein vista nb.

cpu-auslastung bei ca 50% (fenstermodus)
fps:30 del:1

kommt mir immernoch recht hoch vor.

verwendet wurde die vista-version

ThWit Offline




Beiträge: 335

11.07.2009 14:27
#4 RE: CPU Auslastung antworten

Hallo Schwaller

>cpu-auslastung bei ca 50% (fenstermodus)
>fps:30 del:1

Also 30 Bilder pro Sekunde sind eindeutig zu wenig.
Der Delay-Wert von 1 macht dies überdeutlich.
Eigentlich müsste die CPU-Auslastung bei dir damit
bei 100% liegen. Aber der Fenstermodus ist halt so
eine Sache für sich. 99 Seconds sollte eigentlich
mit 60 Bildern pro Sekunde laufen und versucht dies
auch sicherzustellen.

Was für ein Notebook verwendest du denn eigentlich?
Ist es auch schon etwas betagter, wie meins?
Wieviele Prozesse laufen bei dir im Hintergrund und
wieviel CPU-Last erzeugen sie?

Meiner Meinung nach ist deine Hardware für die
Vista-optimierungen nicht geeignet. Aber Vorsicht!
Eine Ferndiagnose mit so wenigen Informationen ist
immer eine riskante Sache. Probiere doch auch einmal
die "normale" Version aus und teile uns mit ob du
damit die gewünschten 60 Bilder pro Sekunde erreichst.

Thomas

schwaller Offline



Beiträge: 48

11.07.2009 14:46
#5 RE: CPU Auslastung antworten

es ist ein medion 96970 - wurde mit vista ausgeliefert und trägt auch einen designed for vista button :)

das es nur 50% sind schiebe ich auf hyperthreading bzw. dualcore - habe nicht genau geschaut, welche der virtuellen oder tatsächlichen cpu-kerne die auslastung brachten. kann dies aber gerne noch nachholen.

andere prg liefen zu dem zeitpunkt nicht - ausser die vielfältigen normalen diesnte, die jedoch nur eine max cpu-auslastung von 2-4% verursachen.

die "normale" version verhält sich ähnlich - genaue werte der fps/del muesste ich dann morgen mal nachgucken.

maybe eine version mit nicht synchronisiertem Retrace wäre hier besser?
evtl. ist das ja auch ein problem mit bestimmten graka-treibern?

in dem zusammenhang wäre es evtl interessant, was andere so verwenden und wie dort die cpu-belastung aussieht.

ThWit Offline




Beiträge: 335

11.07.2009 15:06
#6 RE: CPU Auslastung antworten

>maybe eine version mit nicht synchronisiertem Retrace wäre hier besser?
>evtl. ist das ja auch ein problem mit bestimmten graka-treibern?
Ich habe sowohl im Notebook als auch im grossen Rechner ATI-Grafikkarten,
da mir meine erste Nvidia nur Probleme bereitete. Aber das war im Jahre
2000 (oder so).
Ich habe das mal mit dem nicht synchronisierten Retrace ausprobiert.
Dabei konnte ich zu meiner Freude feststellen, das es völlig egal ist,
12 Millisekunden pro frame so, oder mit meiner bestdelay-Funktion zu
übergeben.

TomS Offline



Beiträge: 25

11.07.2009 18:41
#7 RE: CPU Auslastung antworten

Hallo,

ich finde das Game einfach genial, aber auch meine Notebooks mit XP gehen bei SingleCPU auf 100%, der DualCore auf 50%. Da fängt der Lüfter an zu laufen wie verrückt.


Gruß
Tom

ThWit Offline




Beiträge: 335

11.07.2009 19:18
#8 RE: CPU Auslastung antworten

Hallo Tom

Vielleicht hast du ja die Möglichkeit durch drücken von <F10> mitzuteilen,
wieviele Frames dein Notebook darstellt, und wie gross das Delay ist, das
60 mal pro Sekunde an Windows abgegeben wird.

(60 x ein Delay von z.B. 5 in der Sekunde kann keine 100% Last erzeugen)
(welche CPU Last erzeugen bei dir denn "andere" Spiele?)

Thomas

ThWit Offline




Beiträge: 335

11.07.2009 19:59
#9 RE: CPU Auslastung antworten

Hallo

Es ist zwar nur ein Experiment, aber probieren sollten wir es ruhig mal.
Ich habe gerade mal eine Version erstellt, die durch drücken von <V>
vom synchronen Bildaufbau zum nicht-synchronen umschaltet (und zurück).
Bitte <V> gedrückt halten um die FPS, das Delay und den Modus zu beobachten.
FPS: 60 Del: 12/1 (/1=warten auf retrace /0=kein warten auf retrace)

Viel Spass beim testen

http://99seconds.lahmer-server.de/99_Seconds_flipit.rar

Thomas

TomS Offline



Beiträge: 25

12.07.2009 01:25
#10 RE: CPU Auslastung antworten

Hallo,

ich habe die Version mit der "V" Taste getestet, im Vollbild komme ich mit meinem Toshiba P200 auf FPS: 26-28 /Del: 1/1 und FPS: 30-32 /Del: 1/0.

Die letzten 2 Testversionen laufen aber nicht so schön flüssig wie die 0.96. Die Steine fallen langsamer und ruckelnder.

Was mich interessieren würde, wie machst du das Delay? Welche Funktion benutzt du dafür? Ich programmiere selbst, zwar meist Programme für die serielle Schnittstelle aber ich kämpfe auch mit den Delays, insbesondere neuere Rechner mit anderen Timern ausgestattet sind, die sich ganz anders verhalten wie bei älteren Rechnern.

Gruß
Tom

ThWit Offline




Beiträge: 335

12.07.2009 01:32
#11 RE: CPU Auslastung antworten

Hallo Tom

Das sind ja echt bescheidene Werte... 23 Bilder anstatt 60 ist echt zu wenig.
Das ruckeln kann von der alten Konfiguration stammen, ich habe den Bildaufbau
etwas geändert, drücke einfach mal die Tasten 1 bis 5 um die neuen Werte zu
aktivieren.

den rest dann morgen, gut's nächtle

TomS Offline



Beiträge: 25

12.07.2009 02:00
#12 RE: CPU Auslastung antworten

Hi,

sorry war mein Fehler, hatte ein Powerprofil eingestellt was eigentlich nur zum Download sein sollte, da läuft die CPU etwas langsamer

ich habe die Version mit der "V" Taste getestet, im Vollbild komme ich mit meinem Toshiba P200 auf FPS: 56-61 /Del: 5-6/1 und FPS: 56-73 /Del: 5-8/0.
Im WindowMode sinds 2-3FPS weniger, die CPU Auslastung liegt bei 60-70% eines CPU Kerns (30-35% Systemlast) bei gestartetem Spiel ohne dass ein Stein bewegt wird

CPU: Intel Core2Duo T5550 1,83GHz
Grafik: ATI Mobility Radeon HD 2600

Was mich interessieren würde, wie machst du das Delay? Welche Funktion benutzt du dafür? Ich programmiere selbst, zwar meist Programme für die serielle Schnittstelle aber ich kämpfe auch mit den Delays, insbesondere neuere Rechner mit anderen Timern ausgestattet sind, die sich ganz anders verhalten wie bei älteren Rechnern.

Gruß
Tom

schwaller Offline



Beiträge: 48

12.07.2009 11:24
#13 RE: CPU Auslastung antworten

sodele hab das gerade auch mal getetstet. also ganz gleich ob mit warten auf flip oder ohne - die framerate sowie die cpu-belastung sind nahezu identisch. was mir noch aufgefallen ist - bei der nicht vista-compilerten version wird wohl am anfang das farbschema anders gesetzt - das meldet vista zumindest - nicht schlimm, aber halt auch net schön die meldung.

als graka ist hier im notebook eine nvidea geforce 9300MG verbaut und keine ati. könnte es da evtl unterschiede geben?

und nochwas - auf f10 hast du wohl iene pause gelegt oder? denn wenn f10 gedrückt wird, dann seh ich zwar das bild, aber die cpu-belastung geht auf nahezu 0 zurück :)

ThWit Offline




Beiträge: 335

12.07.2009 12:12
#14 RE: CPU Auslastung antworten

Hallo Schwaller

>also ganz gleich ob mit warten auf flip oder ohne -
>die framerate sowie die cpu-belastung sind nahezu identisch.
Das habe ich bei mir ja auch festgestellt.

>was mir noch aufgefallen ist -
>bei der nicht vista-compilerten version wird wohl am anfang das farbschema anders gesetzt -
>das meldet vista zumindest - nicht schlimm, aber halt auch net schön die meldung.
Das könnte vielleicht der Grund für die CPU-Last sein!
Auf meinem betagten Notebook laufen Spiele mit 16Bit Farbtiefe wesentlich geschmeidiger
als in 32Bit Farbtiefe. Da du vermutlich den Desktop auf 32Bit gesetzt hast, wird folglich
auch das Fenster in dieser Farbtiefe geöffnet. Da ich aber einen DirectX-Screen in 16Bit
öffne und ihn als Fenster deklariere, muss vermutlich der gesamte Grafik-kram von 16 auf
32 Bit umgerechnet werden. Ich mache gleich mal eine Testversion die einen 32Bit-Screen
öffnet, vielleicht bringt uns das ja weiter.

>als graka ist hier im notebook eine nvidea geforce 9300MG verbaut und keine ati.
>könnte es da evtl unterschiede geben?
Vermutlich tun die beiden sich heutzutage nicht viel, sonst wäre NVidia längst pleite.

>und nochwas - auf f10 hast du wohl iene pause gelegt oder?
>denn wenn f10 gedrückt wird, dann seh ich zwar das bild,
>aber die cpu-belastung geht auf nahezu 0 zurück :)
Nein, daran ist wieder das wundervolle Windoofs schuld.
Mir fiel, als ich mich (ausgerechnet) für <F10> entschieden hatte auch auf, das (nur im)
Fensterbetrieb, das Programm bei drücken von F10 angehalten wird. Dieses Phänomen hatte
ich ja bereits mit der <ALT>Taste entdeckt. Deshalb ist in der letzten Testversion die
FPS Anzeige auch auf die <V>Taste verlegt worden. F10 werde ich sicherheitshalber auch
mit der Pauseanzeige belegen, damit das Spiel nicht versehentlich lahmgelegt werden kann.

Achja, schnell noch was zur Bildwiederholung:
Es ist bei Spielen eigentlich egal, ob sich etwas auf dem Bildschirm bewegt oder nicht.
Trotzdem wird (bei mir z.B.) 60 mal der Bildschirm von neuem berechnet bzw. gezeichnet.
Bewegung ändert lediglich die Position der Objekte auf dem Bildschirm.

ThWit Offline




Beiträge: 335

12.07.2009 13:00
#15 RE: CPU Auslastung antworten

Hallo Tom

>sorry war mein Fehler, hatte ein Powerprofil eingestellt was eigentlich nur zum Download
>sein sollte, da läuft die CPU etwas langsamer
Interessant.

>ich habe die Version mit der "V" Taste getestet, im Vollbild komme ich mit meinem
>Toshiba P200 auf FPS: 56-61 /Del: 5-6/1 und FPS: 56-73 /Del: 5-8/0.
>Im WindowMode sinds 2-3FPS weniger, die CPU Auslastung liegt bei 60-70% eines CPU Kerns
>(30-35% Systemlast) bei gestartetem Spiel ohne dass ein Stein bewegt wird
Auch wenn alle 256 Steine sich gleichzeitig bewegen würden, würde das nichts ändern.
Ich finde diese Werte doch recht akzetabel. Scheinbar sind moderne Grakas zum reinen
Anzeigen von Sprites nicht mehr so gut geeignet wie ältere. Dafür ist heutzutage ja
auch alles in 3D. (wems gefällt)

>Was mich interessieren würde, wie machst du das Delay?
>Welche Funktion benutzt du dafür? Ich programmiere selbst,
>zwar meist Programme für die serielle Schnittstelle aber ich kämpfe auch mit den Delays,
>insbesondere neuere Rechner mit anderen Timern ausgestattet sind,
>die sich ganz anders verhalten wie bei älteren Rechnern.
Also kämpfen muss ich mit den Delays nicht gerade, die funktionieren eigentlich ganz gut.
Allerdings ist eher Windows meist das Problem.

Zuerst einmal, bekommt 99 Seconds eine etwas höhere Priorität. Jedes Programm bekommt,
sofern es dies nicht ändert, die Priorität "normal" mit dem Kennwert 8. Das hat aber
leider zur Folge, das es dadurch auch wie jedes andere behandelt wird. Für Anwendungen
ist dies ja auch kein Problem, da spielt es keine Rolle ob die Daten ein par Milliseks
später kommen als angefordert. Bei einem flüssigen Bildablauf in einem Spiel macht sich
dies aber sehr deutlich als ruckeln bemerkbar. Daher setze ich die Priorität auf High
mit dem Kennwert 13. (Realtime mit dem Wert 24 ist nicht notwendig)

Durch die höhere Priorität bekommt 99 Seconds (und alle anderen auf High eingestellten
Prozesse) eben "vor" den "normalen" Prozessen seine Datenwünsche erfüllt. Zumindest
"versucht" Windows das, so oft wie möglich zu gewährleisten.

Abhängig davon, ist allerdings auch die Qualität der im Rechner verbauten Zeitmesser,
oder Timer. Oft sind sie im BIOS auf den Default-Wert 5 Millisekunden eingestellt.
Windows übernimmt diese Einstellungen natürlich. Mit dem dir als Programmierer sicher
bekannten Befehl; timeBeginPeriod_(_GT_DevCaps\wPeriodMin) wird der Timer nun auf den
kleinstmöglichen Wert (Period Minimum) eingestellt. Meist hat man Glück, und kann dann
auf die Millisekunde genaue Delays erreichen. Auf der Gurke meiner Freundin sind es
leider nur 5 Millsekundensegmente.

Nach diesen zwei kleinen Vorbereitungen hat sich das Thema Delay eigentlich erledigt.
Wenn alle Berechnungen erfolgt sind und man nur noch auf den Flip warten muss, kann
man entweder die Wartezeit an Windows zurückgeben, via Delay_ oder Delay (), oder man
verbrät die Zeit mit 200 000 000 Abfragen ob der DirectX-flip endlich erfolgt ist.

Ohne den Retrace käme ich hier, mit meinem Gurken-Notebook locker auf 200 FPS, was
beweist, das 99 Seconds hier wirklich nur zwischen 4 und 5 Ms braucht. Allerdings
wäre der Bildaufbau dann überhaupt nicht wahrnehmbar weil alles viel zu flott geht.
Deshalb die Delay-Bremse, die 60 FPS zu gewährleisten versucht und den Lüfter auch
nicht anspringen lässt, da Windows genug Zeit an den Idle-Prozess weiter reicht.


BTW: Du schreibst, dein Lüfter macht bereits bei 50% CPU Last einen Höllenlärm.
Ich hoffe für dich, du machst keine Rechenintensiven Dinge auf dem Notebook.

Hast du die Möglichkeit die CPU in der Taktrate zu beeinflussen?

Mit meinem Notebook (von 2002) habe ich die Möglichkeit es "Batterie optimiert" zu
betreiben. Dahinter steckt eigentlich nichts anderes, als die Tatsache, das die
Taktrate 700 Mhz nicht übersteigt. Der Lüfter springt dadurch nicht an, da die CPU
nicht heiss genug wird. Die Zweite mögliche Einstellung "Maximale Leistung" lässt
es bis auf 933 Mhz hochtakten, was dann auch den Lüfter anspringen lässt. Mein Ziel
war es natürlich, das Delay so hinzukriegen, das der Lüfter trotzdem nicht anspringt.

Thomas

Seiten 1 | 2 | 3 | 4 | 5
 Sprung  
Xobor Einfach ein eigenes Forum erstellen | ©Xobor.de