Hello everyone!
I have samsung galaxy A520F with official lineage 14.1 (version 14.1-20180509-NIGHTLY-a5y17lte) installed.
I facing strange cpu scheduler behavior now:
1. Scheduler never uses more than 4 cores, although phone has 8 equal cortex-A53 cores.
2. Scheduler never uses less than 4 cores, even at light loads(4-10%)
3. Scheduler sets equal cores frequencies for all 4 cores.
On the stock OS everything was as expected, at light load there were 1 core active at small frequency, and at high load all 8 cores was active.
Screenshots to be added.
Thanks!
You better post there:
https://forum.xda-developers.com/samsung-a-series-2017/development/rom-lineageos-14-1-alpha-t3654935
Related
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.
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....
Hello, in my device running Exynos 5420. This cpu have 8 cores. Why when I running cpu-z app it shows only 4 cores - 0,1,2,3 cores. Where another 4 (Cortex A7)?
I attached screenshot.
https://www.dropbox.com/s/npshqo2wtnlqomm/Screenshot_2016-12-23-17-12-38.jpg?dl=0
Thanks for advices.
Sunrise2000 said:
Hello, in my device running Exynos 5420. This cpu have 8 cores. Why when I running cpu-z app it shows only 4 cores - 0,1,2,3 cores. Where another 4 (Cortex A7)?
I attached screenshot.
https://www.dropbox.com/s/npshqo2wtnlqomm/Screenshot_2016-12-23-17-12-38.jpg?dl=0
Thanks for advices.
Click to expand...
Click to collapse
It's all the same everywhere ... I guess that's because KK and LL don't have the ability to use and control 8 cores at the same time ... The A7 small cores actually start working when system is doing demanding tasks ... As a Kernel Dev , I can confirm that the appropriate Drivers are implemented for both A7 and A15 Processors ... So , It should be just that the current Android Arch is not that compatible with 8 Core Control ... I guess It was said that in Nougat , the New arch does support full 8 Core control ... But , So far I haven't faced such features in related threads and i don't want to make you think that it would be GREAT to control 8 cores because currently TW's source does it by itself ... I hope it was helpful to you ...
With Best Wishes
Hitman1376
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