Did anybody noticed the following bugs and behavior in stock kernel CPU controls ? If not, can you please post your ROM/build/kernel versions or even firmware version? Maybe some firmwares are fixed?
- Setting max CPU frequency actually change kernel internal min CPU frequency! eg if I set 1GHz max frequency, all cores jump to 1GHz minimum! Setting min CPU frequency seems to have no effect. Only a reboot can recover from this, sadly.
- Setting governor to interactive_eglinteractive freezes the phone which then reboots after a while.
- There doesn't seem to be any mpdecision module running, so all cores are always online, except maybe second CPU cores are turned-off in standby.
On the positive side, it appears that controlling online states of individual cores works well, good to turn off cores when screen's off for example.
I'm running latest received OTA: Android 4.3, kernel 3.4.39-2641344, build version JSS15J.N7505POUBND2.
Most of the features you are talking will not work correctly without a custom OC kernel....So let it be like it is untill we get a custom kernel....
Related
I flashed the injected stock ROM, and this might not be related to the ROM, but I can't post in this thread, but it seems like the hacks to the ROM might have messed up the multiprocessor support? Am I just crazy but CPU0 has all the processor time if you look by apps. Does the kernel support that reporting? I noticed in the logs lots of ERROR messages about E/MP-Decision
In Android System info I only see a listing for CPU 0, in AnTuTu CPU it lists CPU1 then removes it.
Going into a shell I have confirmed that
/sys/devices/system/cpu/cpu0/online is set to 1
/sys/devices/system/cpu/cpu1/online is set to 0
Am I missing something in 4.0.4? Is this normal power save behavior? Is this possibly a script like from the CPU sleeper (which only works when screen is off...)
Is there a CPU monitor that show both CPU usages? Does ICS sleep unneeded CPUs??
I see there are Core2 Management and 2nd core which let you chose the CPU1 active or not. Unfortunately, they don't really work with the stock kernel. They appear to, but in a Stability Test program, they are active.
I see that the error messages are related to dynamic hotplug mode. And this script http://forum.xda-developers.com/showthread.php?t=1798765 seems to enable battery life by forcing Dual Core all the time (which I'm not sure that would be better other than two cores at lower clock is more battery life).
Hey guys,
i got a problem adjusting the cpu frequencies on my Galaxy S4 mini GT9195.
For example, i change it to 162mhz minimum and 1026mhz maximum and the smartassV2 govenor. Then that changes ramdomly to some weird frequencies automaticly and out of a sudden. Like 1458mhz minimum and maximum.
I use the cyanogenmod11 M7 rom and the f4ktion 1.5.0 Kernel (the cyanogen kernel does the same btw)
As App for adjusting i use the Kernel Tweaker, but even if i do it in the System settings its doing the same...
I did some undervolting, this stays as i set it.
I hope you guys can help me its annoying to check it every houre and see that it changed again and drains my battery
Sebastian
Devices using a modern qualcomm cpu, relies on two userspace daemons (mpdecision and thermald) to manage frequency and thermal throttling. So mpdecision takes care of the frequencies and cpu hot-plugging (when to engage additional cores or not), and thermald lowers the frequency if the temperature gets too high, in order to protect the cpu from overheating. This is not compatible with the frequency settings in CM or any third party app with similar functionality, as they will always override whatever you set there.
arco68 said:
Devices using a modern qualcomm cpu, relies on two userspace daemons (mpdecision and thermald) to manage frequency and thermal throttling. So mpdecision takes care of the frequencies and cpu hot-plugging (when to engage additional cores or not), and thermald lowers the frequency if the temperature gets too high, in order to protect the cpu from overheating. This is not compatible with the frequency settings in CM or any third party app with similar functionality, as they will always override whatever you set there.
Click to expand...
Click to collapse
I see.. Thanks for the answer mate, so there's no way to save battery like this? It just seems sometimes that it's stuck at some frequencies...
Well, you could make a custom boot image that disables those daemons, but it could cause more harm than good.
Sebastianm1989 said:
Hey guys,
i got a problem adjusting the cpu frequencies on my Galaxy S4 mini GT9195.
For example, i change it to 162mhz minimum and 1026mhz maximum and the smartassV2 govenor. Then that changes ramdomly to some weird frequencies automaticly and out of a sudden. Like 1458mhz minimum and maximum.
I use the cyanogenmod11 M7 rom and the f4ktion 1.5.0 Kernel (the cyanogen kernel does the same btw)
As App for adjusting i use the Kernel Tweaker, but even if i do it in the System settings its doing the same...
I did some undervolting, this stays as i set it.
I hope you guys can help me its annoying to check it every houre and see that it changed again and drains my battery
Sebastian
Click to expand...
Click to collapse
f4ktion kernel 1.5.0 is not designed for M7. For M7 use 1.4.5.
I'm right now with nightly 0703, kernel 1.5.0, mpdecision disable and MSM Hotplug enable (performance control). With this settings that bug disapeared. 162 mhz - 1728 mhz; smartassh3; ROW.
In M7, and 1.4.5 kernel, the only governor that works with 162 mhz and don't change to 1458 mhz is the Ondemand.
Why doesn't the max cpu remain constant in kernel audiutor??
I have cm 13 and I have tried flashing the Nebula kernel, used their modded kernel audiutor app and max frequency doesn't stick, after I put it at 2457 MHz and try out a benchmark I would get sh**ty scores and go back to Kernel Audiutor app to find out that my new max frequency was 800 MHz (or another, max frequency was totally random) , why??? I tried flashing the 777 Kernel (maybe the kernel was the issue?) and got the same result! Cpu frequency changes after a while, am I doing something wrong? I have disabled hotplug cpu and the thermal to see if it was the case, didnt work... Any solution?
Settings > Battery > Set mode to performance - you can set this in kernel audiutor i believe (sorry my spelling is crap) but i'm not sure what section it's in.
Still doesn't work
I just tried your suggestion after a little bit of googling and finding this thread. What else could I try? I see my CPU change instantly after applying the changes ..... My phone is really lagging so that's why I need to change this stupid setting.
Hello XDA. Several days ago I flashed Lineage OS of Firelord. In all honesty, I am not happy with scaling frequency. After the ROM flashing>setup process, I learned that the default governor was set to Performance: Cores 0 and 1 are set to a static frequency of 960mhz. While Cores 2 and 3 are disabled.
Little Cluster 4,5,6,7 are set to a static frequency of 1.1ghZ.
Am not sure if this was a design to begin with or may have been overlooked. Either way, it's giving me intemittent freezes due to higher temp than stock. I tried so many Kernel Managers to manipulate the min/max scaling frequency. Was able to use the 1.46ghz frequency for a day and just reverta to 960mhz. This wasn't the case when I was stock Vibe Ui. 5.1.1 and 6.0.1
Tried this approach too: https://forum.xda-developers.com/vibe-p1/development/frequency-decrease-to-save-power-t3392943/page2 the frequency holds after flashing s272 but iT sometimes overwritten by a conflicting parameter.
I understand CM doesn't normally use mpdecision but I'd be very grateful to anyone who can extend his assistance in resolving this governor/scaling issue. I just need a min_freq of 345000 and use 1340000 frequency while playing MC5. Or stock S272 and S288 scaling frequency which can be ported/applied on this rom on boot and normal use.
I have already tried Exkernel manager, 3c toolbox, kernel adiutor. These 3 don't haveprevent changes from other apps (or system)" option unlike setcpu and nofrills. But unfortunately setcpu and nofrills aren't working on CM14. Not sure if it's due to a systemless root setup.
*
In over simplification, I would like to have a stock Lollipop/MM Interactive/Ondemand Governor be applied here. Thanks.
Is there an oreo-based kernel to perform cpu underclocking? Or maybe a way to be able to do the underclock on android 8? Because most of them are only on android nougat, but on oreo no one has developed anything yet ...
AntoKemz said:
Is there an oreo-based kernel to perform cpu underclocking? Or maybe a way to be able to do the underclock on android 8? Because most of them are only on android nougat, but on oreo no one has developed anything yet ...
Click to expand...
Click to collapse
There is an app I used on my old phone: https://play.google.com/store/apps/details?id=com.grarak.kerneladiutor
Sent from my Samsung SM-A520W using XDA Labs
AntoKemz said:
Is there an oreo-based kernel to perform cpu underclocking? Or maybe a way to be able to do the underclock on android 8? Because most of them are only on android nougat, but on oreo no one has developed anything yet ...
Click to expand...
Click to collapse
You can underclock with stock kernel if I know correctly.
The stock oreo kernel of a520f supports these features and it should apply to (Exynos) most custom kernels, all devices across A 2017, and most related devices.
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq - Max clock of cluster 0, reduce to underclock the CPU.
/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq - Max clock of cluster 1, reduce to underclock the CPU.
/sys/power/cpufreq_max_limit - Max clock of both clusters, more forced once permissions are set, watch device temperatures.
/sys/power/cpuhotplug/max_online_cpu - write a number 1 to 8, it is the CPU cores that are online.
Maybe relevant:
/sys/class/misc/mali0/device/dvfs_max_lock - GPU clock, more forced once permissions are set, watch device temperatures.
/sys/class/misc/mali0/device/core_mask - The GPU core combination in use, write a number 1 to 7.
/sys/class/misc/mali0/device/dvfs_governor - GPU governor, write a number 1 to 3.
/sys/class/devfreq/17000010.devfreq_mif/max_freq - could affect cellular and wifi
/sys/class/devfreq/17000020.devfreq_int/max_freq
/sys/class/devfreq/17000030.devfreq_disp/max_freq
/sys/class/devfreq/17000040.devfreq_cam/max_freq
The CPU governor is with scaling_max_freq though only userspace performance interactive.
Reboot to undo changes.
Edit:
/sys/devices/system/cpu/cpufreq/mp-cpufreq/cluster0_max_freq
/sys/devices/system/cpu/cpufreq/mp-cpufreq/cluster1_max_freq
Though this should not exceed the max clock, in addition to the governor's settings(/sys/devices/system/cpu/cpu[0-7]/cpufreq/interactive/...), the CPU clock is boosted temporarily when the screen is touched, the activity is changed, etc, even when it might not be needed. It's often "touchboost", and could be disabled by enabling medium power saving, or,
/sys/power/cpufreq_min_limit (home, gesture, scroll, app change, unlock)
"644 permissions" - disabled
"664 permissions" - default
check its contents after changing, should be the CPU min clock.
/sys/class/input_booster/level (touch, long touch, multiple fingers, etc)
0 - disabled touchboost
1 - low
2 - default
3 - high
might need the permissions being 464
CPU 4-7 needs to be powered on before cpufreq becomes available in its folder.
sheepkill15 said:
You can underclock with stock kernel if I know correctly.
Click to expand...
Click to collapse
Instead of what I understand, with the normal app type cpu master, or no frills cpu you can not change the clock of the CPU and the governor, but with the app Kernel Adiutor, recommended by @iloveoreos is possible, it is very strange this thing. However, despite the underclock of the CPU you can not then earn so much battery, it seems void
AntoKemz said:
Instead of what I understand, with the normal app type cpu master, or no frills cpu you can not change the clock of the CPU and the governor, but with the app Kernel Adiutor, recommended by @iloveoreos is possible, it is very strange this thing. However, despite the underclock of the CPU you can not then earn so much battery, it seems void
Click to expand...
Click to collapse
It doesn't count that much because you rarely use the cpu max freq. Maybe try underclocking the gpu too, if you can but probably not and there's not much else to do
AntoKemz said:
Instead of what I understand, with the normal app type cpu master, or no frills cpu you can not change the clock of the CPU and the governor, but with the app Kernel Adiutor, recommended by @iloveoreos is possible, it is very strange this thing. However, despite the underclock of the CPU you can not then earn so much battery, it seems void
Click to expand...
Click to collapse
The cpu and gpu are managed by the OS and its resepective governor settings. Little will be gained by reducing cpu cylcles unless it's correctly managed.
The single biggest battery user is the screen. Either reduce the brightness to the lowest you can stand and limit its on time or use powersave mode which will reduce both screen and cpu/gpu frequency.
Also selecting a more suitable governor helps.
If you frequently use high cpu usage apps its pointless using a conservative governor as you'll just lag the device. An ondemand governor would be better suited.
You can also set apps to be killed the moment you leave them in the developer settings.
ashyx said:
The cpu and gpu are managed by the OS and its resepective governor settings. Little will be gained by reducing cpu cylcles unless it's correctly managed.
The single biggest battery user is the screen. Either reduce the brightness to the lowest you can stand and limit its on time or use powersave mode which will reduce both screen and cpu/gpu frequency.
Also selecting a more suitable governor helps.
If you frequently use high cpu usage apps its pointless using a conservative governor as you'll just lag the device. An ondemand governor would be better suited.
You can also set apps to be killed the moment you leave them in the developer settings.
Click to expand...
Click to collapse
The problem is that with the only governors we have in stock are interactive, performance and userspace. The kernel allows me to just adjust the cpu, and on android oreo we do not have custom kernels that allow me to do anything. So in addition to lowering the brightness, really there is nothing that thanks to xposed and the root that allows me to do at least 5 hours of screen? The upgrade to oreo ruined everything, Nougat was too perfect