RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    [Merged] Power Saver feature

    Scheduled Pinned Locked Moved Ideas and Development
    emulationstatiotestingpowersaver
    164 Posts 10 Posters 67.3k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • cyperghostC
      cyperghost @Hex
      last edited by cyperghost

      @Hex Okay I understand. So it's a question of the framwork and the programmer (aloshi?) was forced to use this stupid polling events.

      It's really a nice that you made this possible! And I hope that this fix will find it's place in ES development!


      Nearby for info @interested:
      Polling is a timed loop waiting for events - just stupid. You are doing this if you have really no knowledge how a process is working or the surrounded framework lacks of better techniques. Then you are using polling events! So you let the CPU do something (or let the CPU just waiting in background) and after 100µS you check an event (button press...) and it says "Something happend" or "Nothing happend". Then you can produce errors like bouncing ... make 2 steps instead of one.

      The better way is to use interrupts. You use a trigger that stays permanent in memory and this trigger is waiting for an event. If the event has started than a vector jumps back to the programm and says "Something happend!" and that's always better for CPU usage but needs a bit more programming skills!

      Think about 2 humans talking to each other.

      The Poller:

      Person 1: What's up?
      Person 2: Nothing!
      After 5 minutes
      Person 1: What's up?
      Person 2: Nothing!
      After 5 minutes
      Person 1: What's up?
      Person 2: Nothing!
      After 5 minutes
      Person 1: What's up?
      Person 2: You get me on the nerves?
      Person 1: Really - what you want me to do?
      Person 2: Get me out of this

      The Interrupter

      Person 1: If there is a need for smalltalk... then please tell me! (=set pointer to person 2)
      5 min
      5 min
      5 min
      Person 2: It's so boring (=vector back to Person 1 = Interrupt request or IRQ)
      Person 1: What you want me to do?
      Person 2: Get me out of this

      ;)

      1 Reply Last reply Reply Quote 1
      • HexH
        Hex
        last edited by Hex

        @cyperghost The programmer Alec "Aloshi" Lofquist, was probably coding on a PC and did not make things for small devices. Stock ES uses 1% at idle on my Linux laptop which equates to 60% on Pi 0.

        Lets say ES is a worker and OS is his manager. ES is at his desk. Never mind you just edited to add something like this :| And the 5mins is more like 1ms

        Sent from 20,000 leagues under the sea.

        Powersaver Emulation station : https://github.com/hex007/EmulationStation
        ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

        1 Reply Last reply Reply Quote 2
        • cyperghostC
          cyperghost
          last edited by cyperghost

          @Hex
          I just wanted to write something everbody can imagine! It's better to talk about a pointer that is setted to a fixed RAM cell and sends a vector back to the pointer with annother value? Of course we are talking about GHz so 1ms is really a long long time :)
          Thank you for the technical background.

          1 Reply Last reply Reply Quote 1
          • SanoS
            Sano
            last edited by

            Optimizing is ALWAYS a good thing, even on the most powerful hardware.

            I know most devs (except maybe linux/free software devs) nowadays think it will be cheaper and faster to just add more RAM or whatever, but this is wrong on so many levels...

            As a sysadmin, I can swear I've seen so many poorly coded applications that I just want to flip a table over some devs head.
            I have tons of examples if you want to laugh :)
            Including some SQL request going down from 20min to 4s after simple optimization, or a soft doing 70000 iops (yup !) for a 3min long on-user-demand treatment that was optimized to a mere 15s (and 150iops usage).
            God sometimes I hate my life...

            1 Reply Last reply Reply Quote 1
            • HexH
              Hex
              last edited by

              Are your systems running on batteries or connected to a power supply? My battery life testing is quite simple. if i have to test different batteries I run Contra on NES emu. It has something like attract mode where the Cpu plays so i get comparison between different batteries or boost circuits.

              With ES I switch screensaver off and just leave it on Systems view. This allows me to compare power savings over multiple ES builds.

              Sent from 20,000 leagues under the sea.

              Powersaver Emulation station : https://github.com/hex007/EmulationStation
              ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

              1 Reply Last reply Reply Quote 2
              • HexH
                Hex
                last edited by

                I am switching to PS enabled by default and all changes are being finalized. Would the testers like to report any bugs or problems with the branch. One major problem is auto launch of screensaver doesnt work. Manual trigger works. I am looking into that and once that is stable the PR would be ready for merge

                Sent from 20,000 leagues under the sea.

                Powersaver Emulation station : https://github.com/hex007/EmulationStation
                ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                meleuM 1 Reply Last reply Reply Quote 0
                • meleuM
                  meleu @Hex
                  last edited by

                  @Hex said in Testers needed :: Power Saver features :: PR #172:

                  One major problem is auto launch of screensaver doesnt work. Manual trigger works.

                  I like this behavior. Can we label it as a feature instead of a problem. :-)

                  • Useful topics
                  • joystick-selection tool
                  • rpie-art tool
                  • achievements I made
                  fellegF 1 Reply Last reply Reply Quote 0
                  • SanoS
                    Sano
                    last edited by Sano

                    Ok, sorry guys, was short on free time the few past days.

                    I installed the powersaver version of ES on a Pi3, and just... Wow !
                    We're talking about a night and day difference here.

                    As I previously stated, ES CPU usage when active was around 30 to 40%, and dropped to 3-6% only after the screensaver timeout (5min).

                    Now we have :
                    25% when active
                    after a few seconds only, it drastically drops to 0.3 %
                    Very impressive !

                    I'll let the option activated in order to test more in real conditions, but I can't wait the merge with the main branch.
                    Congratulations @Hex

                    Edit :
                    @Hex Is the game number on carousel tweak an addition of yours too ? It may be me, but I didn't see it before using your version.
                    Anyway, this is brilliant.

                    1 Reply Last reply Reply Quote 0
                    • fellegF
                      felleg @meleu
                      last edited by felleg

                      @meleu said in Testers needed :: Power Saver features :: PR #172:

                      @Hex said in Testers needed :: Power Saver features :: PR #172:

                      One major problem is auto launch of screensaver doesnt work. Manual trigger works.

                      I like this behavior. Can we label it as a feature instead of a problem. :-)

                      This is a problem if you want to avoid screen burn-in. I'd much rather have the screensaver be able to start automatically, although, don't get me wrong, being able to start it manually is great in its own right.

                      cyperghostC meleuM 2 Replies Last reply Reply Quote 0
                      • cyperghostC
                        cyperghost @felleg
                        last edited by

                        @felleg Please explain "Screen Burn In" on LCD/TFT

                        1 Reply Last reply Reply Quote 0
                        • HexH
                          Hex
                          last edited by Hex

                          @meleu Hehe, i dont take any "prisoners of war". Its bad when bugs start being labelled as features.

                          @Sano Thank you. I dont understand what you mean by game number on carousel? Are you taking about the number of games in a system shown. That is available in the main branch since a long time.

                          @felleg Worry not, the screensavers video/dim/blank are working as expected with the PS mod. The logic is becoming very complex on the other hand.

                          @cyperghost there are some who use it on plasma or retro TV sets, might be for them?

                          Sent from 20,000 leagues under the sea.

                          Powersaver Emulation station : https://github.com/hex007/EmulationStation
                          ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                          SanoS cyperghostC 2 Replies Last reply Reply Quote 1
                          • SanoS
                            Sano @Hex
                            last edited by Sano

                            @Sano Thank you. I dont understand what you mean by game number on carousel? Are you taking about the number of games in a system shown. That is available in the main branch since a long time.

                            Yes, but I realized on your version that the number doesn't appear automatically after a delay. I have to press down direction for it to appear.
                            I like it, it's more convenient for me to not have this information unless I want it :)

                            1 Reply Last reply Reply Quote 0
                            • HexH
                              Hex
                              last edited by Hex

                              @Sano Again, bugs are not features. It might be okay for you but for someone who doesnt know about this behaviour will be perplexed and complain on forums.

                              Also what system are you getting this behaviour in?

                              Sent from 20,000 leagues under the sea.

                              Powersaver Emulation station : https://github.com/hex007/EmulationStation
                              ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                              1 Reply Last reply Reply Quote 1
                              • SanoS
                                Sano
                                last edited by

                                All of them :) (Mame/FBA/NES/SNES/SMS/Megadrive/Ports/Retropie)
                                I have to press a button (not only the down direction after some tests) for the number of games to appear.

                                1 Reply Last reply Reply Quote 0
                                • HexH
                                  Hex
                                  last edited by

                                  System as in Pi1/2/3 Linux PC??

                                  Sent from 20,000 leagues under the sea.

                                  Powersaver Emulation station : https://github.com/hex007/EmulationStation
                                  ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                                  1 Reply Last reply Reply Quote 0
                                  • SanoS
                                    Sano
                                    last edited by

                                    Sorry.
                                    RPi3, retropie 4.2.8, 3A Aukru power supply.

                                    1 Reply Last reply Reply Quote 0
                                    • cyperghostC
                                      cyperghost @Hex
                                      last edited by cyperghost

                                      @Hex Okay... That's a point :) So ScreenBurn might be an issue.

                                      Other question. Can you help me out please? I wanted to melt your branch together with @pjft but I wasn't able to do this ... The issue is posted here

                                      I've also uploaded the binary you've provided for RPI1/0 build to my github

                                      https://github.com/crcerror/emulationstation-binary-archive

                                      1 Reply Last reply Reply Quote 0
                                      • HexH
                                        Hex
                                        last edited by

                                        @Sano are you compiling the binary?

                                        Sent from 20,000 leagues under the sea.

                                        Powersaver Emulation station : https://github.com/hex007/EmulationStation
                                        ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                                        SanoS 1 Reply Last reply Reply Quote 0
                                        • SanoS
                                          Sano @Hex
                                          last edited by

                                          @Hex compiled via @meleu script, yes !

                                          1 Reply Last reply Reply Quote 0
                                          • HexH
                                            Hex
                                            last edited by Hex

                                            Need testers to update and build to verify all changes. Finally please report any bugs (undocumented behaviour)

                                            Final changes are made:

                                            • PS enabled by default
                                            • Removed PS enable warning
                                            • Works nicely with all screensavers
                                            • Gameinfo is shown with PS enabled too
                                            • mVersion no longer shows PS state. Restored to default.

                                            Sent from 20,000 leagues under the sea.

                                            Powersaver Emulation station : https://github.com/hex007/EmulationStation
                                            ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                                            1 Reply Last reply Reply Quote 2
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.