feat: default to schedutil governor instead of fixed clock speed#497
feat: default to schedutil governor instead of fixed clock speed#497
Conversation
ec573fe to
84c4b5d
Compare
|
Adding some notes on my version of this. I did not try this specific PR because I don't think paks should be able to configure this. In the spirit of MinUI everything should be Auto by default and just work. Anyway, I've been experimenting with a branch of nextUI locally that removes user space CPU freq scaling entirely (as discussed on discord before). The user space scaling causes overheating and unnecessary CPU usage by polling at 50 Hz, immediately increasing core temp to 62°C and up when e.g. playing PS1 titles. After disabling and removing that entire 'feature' I modified the CPU Speed option to instead call one of 3 shell scripts to configure the scaling governor for Auto, Powersave and Performance (removed the "Normal" mode as I think Auto should take its place). The shell scripts get installed as part of NextUI under Then, I can experiment with which governor, min/max frequency and other parameters each of these 3 user-facing CPU speeds will apply. So far I've found the following:
I've experienced significantly better thermal performance with these settings. I never use Performance mode, that needs more investigation. I almost always use Auto or sometimes Powersave. Most of the time in the menus the CPU sits at 408 MHz, ramping up to 1-1.2 GHz when scrolling text animation needs to be shown or if I scroll fast within game lists. In-game, depending on the system the freq scales well, mostly settling in at 800 MHz for GB/GBC and going up to 1-1.2GHz for GBA etc. For SNES, Genesis etc. also mostly stays at or below 1.4 GHz. I will send a PR shortly for the above. Overall I now find the current default user space govenor practically unusable and my kernel space governor scripts to finally make the device enjoyable. The only issue is I have not yet found why PS1 at 2X scaling doesn't run smoothly for all games. I believe other parts of minarch are responsible for this, particularly the audio resampling (which has memory leaks etc.). Furthermore, I believe threaded video implementation will also help as Stage 2 optimisation of minarch. |
As a result of this discussion, I'm currently testing the following: