[Xperia Z5 General] Envious_Data:
Intro

So this is a Guide that ive decided to make because ive found that you can get really good battery or really good performance by adjusting something called core_ctl, now Ive found that the z5's little cores NEVER turn off which in my opinion is silly so i decided to poke around and i found something called corectl and another called msm_performance.

im pretty certain this wont do any damage to your device as ive been playing with this since i got my z5 but there may be a performance hit and another note is that this SHOULD work on any S810 device or anything that has a big.little system.

Things Ive Learned

im going to note down things ive learned here that you shouldent do

- Do not Swap the big cores for the small cores using Is_big_cluster, it will cause repeat FCs and other issues.

- minimum of 1 big and 1 small core as it tends to become laggy without.

- Dont force off cores, if you want a core to turn off then use busy_up_thres or busy_down_thres

Requirements

you WILL need root and a filemanager like xplore unless you already know your way around a terminal emulator/adb

you Definately need a brain[emoji14]and just some time to read this obviously

this only works with the stock kernel or stock-ish kernels as of the moment.

Important Note

Before editing make sure everything is RW (Permission mode 744) and after editing anything be sure to change the permissions to read only (permission mode 644)

Core_ctl?

First of all these settings wont stick if you reboot so we will have to wait for Kernel Adiutor or an app alike to get updated.

anyway lets get started: you can find the parameter files in:

/sys/devices/system/cpu/cpu0/core_ctl/

(alternatively /sys/devices/system/cpu/cpu4/core_ctl/ for the big cores)

there will be 2 folders which will have this, cpu0 and cpu4. cpu0 is sort of the master core for the small cores and cpu4 is the master core for the big cores

(cpu0 to cpu3 are small)

(cpu4 to cpu7 are big)

busy_down_thres:

- Little cores

This file has a default value of "0" (looks like 0 0 0 0) (this is different for the big cores)

this means that if i change it to "25" when the cpu load dips below "25" it will then turn off cores, I recomend putting it at "40" (you dont have to change it to 40 40 40 40, you can just save it as 40)

( it seems the stock values for the big cores is fine with this)

busy_up_thres

If you havent guessed it, this does the oposite of the down_thres one, when your cpu load hits your set value then it will turn on cores, again this is defaulted to "0" for the little cores.

I have mine set to 50 for my little cores (i have left the default value for the big cores)

Is_big_cluster

this one is quite obvious but if you havent figured it out when set to "1" it then it will make the selected cluster (in this case little for example) take on heavier loads and act like the big cores

I dont recomend turning this to 1 as the little cores are little for a reason

max_cpus

this determines how many cpus within that cluster can be online at once

I recomend that you leave it at 4 as the little cores are quite weak but for the big cores you are fine to put it to 2 or even 1 if you want

min_cpus

This determines how many cpus MUST be online at once, I highly recomend that you keep 1 little core online as ive tried both with 0 minimum cores and ive had times where my device went total crazy and started lagging very bad

( you should be fine allowing 0 min_cpus for the big cores)

msm_performance

msm_performance is one of 2 (maybe more) hotplugs that the z5 uses with the stock kernel, there is msm_idle and msm_performance

there are some tweakable parameters in this so lets get started

you can find this in /sys/modules/msm_performance/parameters/

there is not much point to editing msm_performance as core_ctl is better to edit in my opinion

editable files:

- max_cpus

- num_clusters

(im pretty sure you can edit all of these but may be quite anoying to work with as they tend to reset them selves back to default)

max_cpus

so max_cpus is a global limit on how many cores can be on, it overrides what you'll find in the core_ctl but this has a habit of re-setting its self unless you change the permission mode to 644 after editing which is read only

when you open max_cpus you will see "-1:-1" this means any small or big core (e.g small:big), you can change this how ever you like, for example i recomend 4:2 or 2:2

num_clusters

this decides how many clusters you have, by default this is 2 because the snapdragon 810 has one small cluster and one big one, if you set this to 1 instead of 2 the big cores will act like any small core

My Config (updates 22nd of 05th 2016

- Little

busy_down_thres: 85

busy_up_thres: 75

is_big_cluster: 0

max_cpus: 2

min_cpus: 1

- Big

busy_down_thres: 0

busy_up_thres: 0

is_big_cluster: 1

max_cpus: 0

min_cpus: 0