[Huawei Mate 10  Guides, News, & Discussion] otonieru:
As all we know, our phone has one of the newest & most powerful CPU in the market : Kirin 970

together with a huge 4000mAh battery, this phone theoritically should deliver an extremely good battery life. And from what i experienced, this phone perform quite admirably.

That being said, when being compared to other flagships in the market (as can be seen here : https://www.youtube.com/watch?v=lXp-4QyJpmo), Mate 10 still fall short to the like of Oneplus 5 which actually has a smaller battery,

biggest factor that might affect that result , aside from the screen resolution difference, is of course, software & kernel optimisation,

in an attempt to get a better battery life out of this device, but without impacting performance, i remember one of the guide made by [MENTION=5886947]soniCron[/MENTION] i used to stumbled upon few years ago. This Guide give a very detail insight on how to optimize the interactive governor on almost any device/any kernel/any rom (as long as you have root), and thats what i gonna try to apply to our device - if you want to check the guide yourself : HERE

so i take a look into Huawei Mate 10 Kernel Sources to see the voltage values being used by this processor for each frequency step. And here's the table :

from that table, we can see which frequencies are using most power, and where is the most jump in voltage usage happen when switching between frequency.

Higher voltage jump will cost more power, means less battery life.

in conclusion, i found few frequencies which are unfavorable, which is

A53 CPU :

1210Mhz - because it use same power (850000µV) as 1402Mhz, so we better use 1402Mhz instead for better performance with same power cost

1556Mhz - same story, it use same power (950000µV) as 1690Mhz

and

1844Mhz - it use most power, but since this is the top freq, we can neglect it

A72CPU :

1018&1210Mhz - use same power (780000µV) as 1364Mhz, so we better off jump directly to 1364Mhz

1498Mhz - same case, it use same amount of juice (900000µV) as 1863Mhz

and

2362Mhz - it use most power, but since this is the top freq, we can neglect it

_____________________________________________________________________________________________________________________________________________________

Now we take into account of the minimum frequency needed to ensure smooth task (if you dont know what am talking about, read the GUIDE i mention in my opening paragraph) :fingers-crossed:

For Mate 10, i've found the best frequency is as following :

Idle = 509MHz

Scrolling = 1018MHz (Use Chrome browser to scroll Facebook in desktop mode)

Video = 1402MHz (Play 1080p*60fps videos in Youtube app)

App load = 1690MHz (Use any app really)

High load = 1844MHz (Max out just in case)

Using the formula take from soniCron guide, i tried calculate optimum CPU load (this will be used as target load config) config for each frequencies

If you want to see the formulas :

We want to determine 2 values for every available clock rate: the maximal efficient load and the minimal efficient load. To make this determination, we need to bust out our calculators. (Or spreadsheets!)

For the maximal efficient load, we want to correlate a load value no higher than 90% of a given clock rate before it would be more efficient to jump to the next clock rate–to avoid overwhelming a particular rate while avoiding premature jumps to the next. For this value, we calculate it as:

(clock rate * 0.9) / next highest clock rate

For example, the maximal efficient load for 600Mhz on the Nexus 5X would be caluclated as:

(600000 * 0.9) / 672000 = 80.36% (rounded and normalized: 80)

For the minimal efficient load, we want to correlate a load value at which anything higher would be better served by a higher clock rate. To calculate this:

(1 - next highest clock rate / clock rate) * -1

For example, the minimal efficient load for 600Mhz on the Nexus 5X would be calculated as:

(1 - 672000 / 600000) * -1 = 12.00% (rounded and normalized: 12)

with this config, logically speaking we want to make the Governor to favour the "best" frequencies above, and minimize the usage of unfavourable freqs.

A53

509Mhz : 45
1018Mhz : 76
1210Mhz : 15
1402Mhz : 81
1556Mhz : 8
1690Mhz : 82
1844Mhz : 90

A72

682Mhz : 60
1018Mhz : 19
1210Mhz : 13
1364Mhz : 81
1498Mhz : 24
1652Mhz :12
1863Mhz : 80
2093Mhz : 12
2362Mhz : 90

Now that we already get the optimum number, time to apply it

Use your favorite Kernel Manager, in my case, am using Kernel Adiutor, and go to CPU Config - CPU Governor Tunables and input these value (am using Hawktail profile from soniCron thread, as it seems it work best for most of devices, and i already do trial & error with some other value like timer rate as well ) :

A53 (LITTLE)

go_hispeed_load: 99
above_hispeed_delay: 20000 509000:60000 1018000:25000
timer_rate: 28000
hispeed_freq: 509000
timer_slack: 80000
target_loads: 98 509000:45 1018000:76 1210000:15 1402000:81 1556000:9 1690000:82 1884000:90
min_sample_time: 30000
boost: 0
boostpulse_duration: 80000

A72 (BIG)

go_hispeed_load: 99
above_hispeed_delay: 20000
timer_rate: 20000
hispeed_freq: 1863000
timer_slack: 80000
target_loads: 98 682000:60 1018000:18 1210000:12 1364000:81 1498000:24 1652000:12 1863000:80 2093000:12
min_sample_time: 20000
boost: 0
boostpulse_duration: 80000

Now you can test it. Do full charge and use it normally, see whether you can see the improvement or not,

Hopefully it helps you as it seems to help me (you can expect no less than 7Hrs to 10 Hrs SoT, am quite heavy user myself, with 2 WhatsApp account and 1 LINE account constantly active. YouTube & Gaming at least hour/day as well). Discussion is more than welcome here, as these are considered an initial calculations that still yet to furtherly fine tuned for our CPU.