Hallo Besucher, der Thread wurde 9k mal aufgerufen und enthält 52 Antworten

letzter Beitrag von captain_buck_rogers am

Sommerhitze und "State of Performance of C64 Emulation in 2021"

  • Sommerhitze☀️ … endlich!😎 ... wurde ja auch mal Zeit … aber sie stresst die Emulation auf meinem alten Rechner … die Emulation wird jetzt von sehr präsenten Lüftergeräuschen klanglich untermalt🙄 … und der Rechner ist so heiß 🥵 … was die Temperatur nun eigentlich noch weiter ansteigen lässt … moment mal 🤔, in dieser Art war das damals am echten C64 aber nicht so … welcher Emulator meistert denn diesen Aspekt in 2021 noch am besten ?


    kann man das denn überhaupt benchmarken ?


    als Kandidaten kämen in 2021 eigentlich nur solche mit einer zyklen-exakten Emulation in Frage …


    die Wettkampfkandidaten wären aus meiner Sicht

    1. Vice 3.5

    2. Denise 1.1.1

    3. VirtualC64Mac

    4. VirtualC64Web

    5. …?


    Aber wie misst man den Hitze-Stress eigentlich ? Und vor allem welche Kennzahl ? Irgendwie eine Performance/Watt ? Gibt es andere Kennzahlen die einfacher abzulesen sind ?


    mir fallen da folgende Kennzahlen ein

    1. CPU Auslastung im Taskmanager

    2. maximale FPS/Mhz wenn die Taktfrequenz des emulierten C64 nicht gebremst/synchronisiert wird (WARP)

    3. Temperatur und Lüftergeräuschpegel

    4. ...?

  • Die CPU-Auslastung im Warp-Mode ist meiner Meinung nach die naheliegendste Maßzahl. Wichtig ist ein vergleichbares Setting (insbesondere die Laufwerks-Einstellungen und die SID-Einstellungen: Anzahl SIDs + Engine + Interpolationsmethode).

    Die CPU-Temperator hat Charme, allerdings weiß ich nicht, ob sie sich so einfach auslesen lässt. Das Hauptproblem dabei ist aber, dass sie maßgeblich durch andere laufende Prozesse mitbestimmt wird und auch von externen Faktoren abhängt (wie lange läuft der Computer bereits etc.)

  • Wichtig ist ein vergleichbares Setting (insbesondere die Laufwerks-Einstellungen und die SID-Einstellungen: Anzahl SIDs + Engine + Interpolationsmethode).


    Ok ich versuche es mal ... ihr schaut ob ich das alles so richtig mache ...


    Testsetup1:


    MacMini 2014 – blauer PAL C64er Startscreen - 1x1541 – 1x Resid - Interpolation


    Ich hoffe ich habe die Emulatoren alle richtig konfiguriert ...


    👮Commander an Maschinenraum: Emulatoren alle in den warpmode fahren...


    🙉hoffentlich gibt es keine Kernschmelze



    Vice -Warp


    pasted-from-clipboard.pngpasted-from-clipboard.png



    Denise -Warp

    pasted-from-clipboard.png



    Virtual C64 -Warp



    Ohje alles andere Einheiten 🙊 ... müssen wir normalisieren ...


    normalisieren auf Mhz:

    Denise rendered einen C64 mit 189FPS = 189/50 => 3,78 => 3,78*0.985 =>3,72Mhz

    vice rendered den C64 mit 217FPS=> 217/50FPS=> 4,34 => 4,34*0.985=> 4,28 Mhz

    virtualC64 rendered einen C64 mit 5.44Mhz


    🤓

    mal die Prozessor-Last anschauen ... wenn wir die C64er im Originalspeed 0.985Mhz laufen lassen


    mal alle zugleich ...


    Denise 50,5%

    Vice 50,4%

    virtualC64 36,8%


    mal jeder für sich


    vice

    42,2%


    denise

    33,8%


    virtualC64

    26%




    vc64web hat keinen konstanten dauer-Warpmode, deshalb durfte er bei dem Wettkampf der drei großen nicht mitspielen, aber wir können hier auch mal die Last testen... sollte nicht soo schlecht sein, immerhin profitiert er vom selben Core wie effizient laufende VirtualC64Mac


    los gehts ...

    http://vc64web.github.io 1x1541 1xresid - interpolate

    36,6%


    trotz desselben Cores wie VirtualC64, es nützt ihm nichts.... Denise schlägt ihn dennoch und er wird auf Platz 3 verwiesen ! Aber immerhin noch vor Vice 😬...

  • Der dürfte wohl den Rechner am wenigsten belasten da er ja auf dem Server laufen sollte, oder ich habe ein falsches Verständnis von der Funktionsweise.

    ja ... hier wird tatsächlich kein Videostreaming vom Server gemacht sondern der Code ist in Webassembly kompiliert und wird daher auf dem Client ausgeführt ... hat also das gleiche Problem, dass bei der Berechnung der Emulation Wärme anfällt...


    Und was hat das mit irgendwelchen Temperaturen bzw der Hitze zu tun ???

    du hast ein neues MacbookAir mit M1 Prozessor stimmts ? Ja ok, der bleibt natürlich stets kühl und lautlos...


    es gibt aber andere betagtere Computer-Systeme, die nicht so effizient sind... Andererseits hättest du mich damals gefragt, als mein Hauptrechner ein C64er war, hätte ich auch deine Frage gestellt...

    Weil ich da beim C64er auch gar nichts gehört habe und Hitze habe ich am C64 auch nicht bemerkt... er war ja im Brotkasten drin... mit einer Alupappe abgeschirmt...


    Tatsächlich war es schon beim Wechsel auf den Amiga1000 vorbei mit der Ruhe, der hatte einen Lüfter für das eingebaute Netzteil ... aber es surrte eigentlich nur friedlich leise vor sich hin ... Dann kamen irgendwelche zusammengebaute IBM-PC-Kompatiblen 386/486 Rechner die haben eigentlich auch immer konstant vor sich hingelärmt ... es wurde laut ... das Zeitalter der lauten Computer hat begonnen.... mit der Zeit wurden die Lüftungsvorgänge etwas intelligenter ... heutzutage fangen die Systeme (meistens x64-basierte) erst an zu lärmen wenn es heiß wird ... Hitzestau...


    Aber wir können dies ja nun optimieren...


    Wenn ich die Ergebnisse richtig interpretiere, dann werde ich im heißen Sommer den VirtualC64er verwenden, im Winter Vice (der macht schön warm) und im Herbst und Frühling werde ich Denise verwenden(der macht lauwarm) ... hängt natürlich auch vom Gesamtsystem und wie es die Hitze ableiten kann...


    Oh jetzt habe ich aber vor lauter erzählen die Antwort auf deine Frage ganz vergessen ...



    ganz kurz:

    verbratene Rechenleistung also Rechenlast = Hitze


    etwas länger:

    je performanter etwas ausgeführt werden kann oder anders ausgedrückt, je weniger Rechenaufwand ein bestimmter Algorithmus oder Emulator für eine bestimmte Aufgabe benötigt, desto kühler bleibt das Gesamtsystem...

  • du hast ein neues MacbookAir mit M1 Prozessor stimmts ? Ja ok, der bleibt natürlich stets kühl und lautlos...

    Nö, so was modernes besitze ich nicht .... ich finde immer noch das alles hat so rein garnnichts mit Hitze zu tun, ich würde den Thread eher "Emulator Ranking nach CPU Auslastung" oder so nennen, das wäre weniger verwirrend. Versteh mich nicht falsch, das soll keine Kritik sein, aber laut Überschrift und deinem ersten Posting erwarte ich etwas anderes ...


    Und btw. selbst einem 486er ist es egal ob er bei 40, 50 oder 70°C läuft, die Performance des Emulators wird dadurch nicht beeinflusst, es sei denn du hast im BIOS eingestellt dass er sich bei höheren Temperaturen ausschalten soll :D

  • selbst einem 486er ist es egal ob er bei 40, 50 oder 70°C läuft, die Performance des Emulators wird dadurch nicht beeinflusst

    Ah jetzt verstehe ich dich ... klar .. du meinst dass die Hitze die CPU-Geschwindigkeits-Performance nicht beeinflussen sollte ... ich glaube das tut sie wirklich tatsächlich kaum bis gar nicht ...


    Worum es mir geht ist die Thermal-Perfomance der C64-Emulatoren, so dass ich die Hitze und den Lärm minimiert bekomme... nicht wegen der CPU-Ausführungsgeschwindigkeit sondern wegen meiner Haut die immer mit sowas heißem in Berührung kommt (ganz dünnes Lapttop Alu aus 2007) und wegen meinen Ohren, die immer dieses Gelüfte anhören müssen....

  • Naja, dann nimm einen Pi Zero mit BMC64, absolut geräuschlos, dann ne Funktastatur dran und gut, dann kriegst du von eventueller Hitze auch nichts mit :D


    Wie gesagt, ich fand es oben nur komisch beschrieben, auf mich hat es den Eindruck gemacht dass du versuchst herauszufinden, ob durch die höhere CPU Temp die Performance der Emulatoren beeinflusst wird ...

  • Also bei mir sehen die Werte unter Win 7 (alter i5-3230M mit 2 Cores) anders aus.

    Alles beim BASIC screen. 1 mal SID, 1 Floppy


    - Denise 1.1.1 7%

    - alter WinVICE 8%

    - VICE 3.5 13%

    - VirtualC64Web 23%


    Interessant finde ich, dass Denise bei jedem weiteren LW deutlich mehr CPU benötigt, bei 4 sind es dann über 20%.

    VICE hingegen ist das völlig egal, solange sie nicht benutzt werden.

  • Interessant finde ich, dass Denise bei jedem weiteren LW deutlich mehr CPU benötigt, bei 4 sind es dann über 20%.

    Das ist bei VirtualC64 auch so. Das Laufwerk benötigt sehr viel Rechenzeit, da für jedes einzelne neben einer eigenen CPU auch ein VIA emuliert werden muss, der in der Komplexität einem CIA nicht unähnlich ist. Dazu kommt, dass die VC1541 eine geringfügig andere Taktfrequenz verwendet als der C64 und manche Programme nicht mehr laufen, wenn man das nicht berücksichtig. In VirtualC64 kostet das einiges an Rechenzeit, da die Zyklen über double-Variablen synchronisiert werden, um die Zeitunterschiede auszugleichen. Wie das in Denise gemacht ist, weiß ich nicht, aber es wird ähnlich sein. VICE verwendet eine Auto-Abschaltung der Laufwerksemulation, nehme ich an. Das schmälert zwar ein wenig die Kompatibilität, aber ich vermute, dass nur wenige Programme betroffen sind. Weil die Laufwerke so komplex sind, ist die maximale Anzahl in VirtualC64 auf 2 begrenzt, ich kenne aber auch niemanden, der damit nicht ausgekommen ist.

  • Ich habe als kleines Experiment einen auto-idle-mode in VirtualC64 eingebaut, der die VC1541 einfriert, wenn über einen längeren Zeitraum keine Aktivität auf dem IEC-Bus war. Der gepatchte 4.2er Kern läuft dann nach dem Einschalten mit ca. 15 MHz im Warp-Mode, gegenüber 10 MHz vorher. Das sind dann ca. 750 fps 😎. Der Zuwachs ist natürlich beträchtlich und ich werde ein entsprechendes Feature in die nächste Version einbauen. Die meisten C64-Programme sollten auch in diesem "Stromsparmodus" funktionieren. Problematisch sind Fast Loader und Programme, die Code direkt auf der VC1541 ausführen.


    Den Hauptnutzen sehe ich für die Web-Version, da das Phone oder das Tablet deutlich weniger warm werden und dann die Batterie entsprechend länger durchhalten wird.


    Ein Nachteil der momentanen Implementierung ist die Tatsache, dass ich den IEC-Bus überwache und damit nicht sagen kann, welches Laufwerk angesprochen wird. Es werden also entweder alle Laufwerke eingefroren oder gar keins. Es müsste mal jemand im VICE- oder Denise-Quellcode nachschauen, wie das dort gelöst wurde. Wenn ich die Kommentare weiter oben richtig verstanden habe, ist es dort laufwerkspezifisch gelöst.

  • dirkwhoffmann das hört sich gut an ... Energy, Energy ... save more Energy ... wir retten den Planeten...

    Also bei mir sehen die Werte unter Win 7 (alter i5-3230M mit 2 Cores) anders aus.


    hmm stimmt bei dir ist das Verhältnis von Denise 7% zu Vice3.5 13% ca. Faktor 1,85 also 85% Unterschied

    bei meinem macmini2014 Denise 33,8% zu Vice 42,2% ist der nur Faktor 1,25 also 25% Unterschied


    interessant scheint vielleicht auf Windows etwas anders kompiliert zu sein als auf dem Mac ... vielleicht andere Build/Optimierungs-Settings?


    ich check das mal auf meinem ältesten Gerät... macbookpro 2007 mir ner Core2Duo


    Vice


    Denise


    78% zu 52% also Faktor 1,5 also 50% Unterschied...


    die Zahlen variieren wohl etwas zwischen verschiedenen System/Prozessor-Architekturen ... Vielleicht spielt auch die Größe der ProzessorCaches eine Rolle...


    aber die Tendenz bleibt ... Denise scheint sparsamer als Vice zu sein ... oder ?


    leider konnte ich diesmal VirtualC64 der ja der sparsamste auf dem MacMini war 26% zu 33,8% also ca. 30% sparsamer als Denise nicht ausprobieren, weil er eine MetalGrafikkarte erfordert... hat der alte opi nicht ...


    aber ich kann mal vc64web ausprobieren ...


    vc64web mit Safari 1x1541 1xResid interpolate



    wow nicht schlecht ... er schlägt sogar locker Vice3.5 aber nicht Denise ...


    Die Performance von vc64web hängt wesentlich vom Browser ab habe ich herausgefunden. Generell hab ich auf dem Mac festgestellt Safari ist am schnellsten, dicht gefolgt von Firefox, Chrome verbrät am meisten Energy und ist eher langsam ...


    eigentlich bräuchte der alte Mac den VirtualC64Mac was aber nicht geht weil das nur unter modernen Mac läuft ... Denise ist momentan die beste Option für ihn ... mal sehen vielleicht dreht sich das Blatt ja noch wenn vc64web die oben genannte in Aussicht gestellte Laufwerksoptimierung bekommt, sodass er sogar an Denise im Energieverbrauch herankommt. Mal sehen ... wenn dirkwhoffmann das in VirtualC64Mac einbaut werde ich das auf jedenfall gleich für die Webversion übernehmen...


  • Den Hauptnutzen sehe ich für die Web-Version, da das Phone oder das Tablet deutlich weniger warm werden und dann die Batterie entsprechend länger durchhalten wird.


    Das wäre natürlich ‚cool‘ wenn man den vc64 z.B. auf dem iPad länger nutzer kann. Vom Stromverbrauch ist so ein Tablet ja schon recht optimal. Akku/Ressourcen schonen ist gerade bei verklebten/verbauten Apple Resourcen auch eine gute Idee. Vielleicht lässt sich ja da was machen, das man optional dieses ‚Stromsparfeature‘ aktivieren kann?

    Aktuell reduziert sich der Akku nach 7 Minuten um 1% (von51% auf 50% bei ausgeschaltetem Netz, keinen Hintergrund Apps,ohne Sound und reduzierter Helligkeit). Mit aktiviertem Netz verliert der Akku nach ca. 4 Minuten 1%.

  • Also wenn ich meine Drone Demo lade (SID Stuff und etwas Gezappel) kratzt das meinen Rechner inkl Lüfter genau zero. :D


    Worum es mir geht ist die Thermal-Perfomance der C64-Emulatoren, so dass ich die Hitze und den Lärm minimiert bekomme... nicht wegen der CPU-Ausführungsgeschwindigkeit sondern wegen meiner Haut die immer mit sowas heißem in Berührung kommt (ganz dünnes Lapttop Alu aus 2007) und wegen meinen Ohren, die immer dieses Gelüfte anhören müssen....

    Das ist auch der Grund warum ich zum Arbeiten immer nen PC im oldschool Minitower benutze und empfehle. Da passt halt ein XXL-CPU-Kühler rein, den nix kratzt, der nie nervt (auch nicht beim Gaming).