[Nexus 6P General] phantom146:
NOTE:

Please re-download the .txt file below and re-apply. I've missed writing the timer_slack for big cluster and the big cluster's input_boost frequency doesn't stick. This should fix that! Thank you!

Introducing GlassCannon!​

Description: A sound modification to the famous interactive parameters. Provides the smoothest interface, great performance while bestowing the lowest frequencies available. Ramping up quickly to maximize "inputs" from I/O overheads then immediately ramping down once tasks are done. The perfect balance between lowering down your frequency, and finishing up tasks quickly.

Why Glasscannon? Why not?

Who am I? I came from the hammerhead scene. I have been modding interactive parameters for more than 2 years and owns a community called: Android Battery Community whom has its own fair share of followers but has been quite stagnant for almost a year ever since my hammerhead broke. Though, I have been tweaking things with other devices; LG G4, Samsung Note 6, OPO and other smartphones that I got my hands on. Now I think it's time for me to get into the Nexus 6P scene.

The difference? After years of being a paranoid about my battery (literally looking at dashboards, cpu cycles etc. you know, that guy who just tends to not be satisfied about everything) I finally settled down and read a lot of things and made it as my basis. Most tweaks in here uses target load as an optimal way to force cores to stick into lower frequencies but we won't be doing that with GlassCannon. We will be using two underrated tunables: above_hispeed_delay and input_boost. This two underrated tunables are being neglected for years, though some used it quite efficiently; I have yet to see a tweak that maximizes the two tunable's potential. We would be using above_hispeed_delay as a substitute to the unpredictable target_load. Instead of assigning too much within a tunable that we can't even lay our finger on how it works properly, why not let the SoC handle it and assign a delay along with timer_rate so it can run efficiently? And let input_boost jump up here and there to provide quick surge whenever there are tasks running under the hood.

Look under:

[COLOR="Gray"]/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1555200
/sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 93
/sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay 0 600000:19000 672000:20000 960000:24000 1248000:38000
/sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 50000
/sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 600000
/sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_slack 380000
/sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads 29 384000:88 600000:90 672000:92 960000:93 1248000:98
/sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 60000
/sys/devices/system/cpu/cpu0/cpufreq/interactive/boost 0
/sys/devices/system/cpu/cpu0/cpufreq/interactive/align_windows 1
/sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1
/sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 0
/sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis 0
/sys/devices/system/cpu/cpu0/cpufreq/interactive/boostpulse_duration 0
/sys/devices/system/cpu/cpu4/cpufreq/scaling_governor interactive
/sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 384000
/sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq 1824000
/sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load 150
/sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay 20000 960000:40000 1248000:30000
/sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate 60000
/sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq 960000
/sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads 98
/sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time 60000
/sys/devices/system/cpu/cpu4/cpufreq/interactive/boost 0
/sys/devices/system/cpu/cpu4/cpufreq/interactive/align_windows 1
/sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif 1
/sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load 0
/sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis 0
/sys/devices/system/cpu/cpu4/cpufreq/interactive/boostpulse_duration 0
/sys/module/cpu_boost/parameters/input_boost_freq 0:600000 1:600000 2:600000 3:600000 4:960000 5:960000 6:960000 7:960000
/sys/module/cpu_boost/parameters/sync_threshold 1248000
/sys/module/cpu_boost/parameters/boost_ms 40
/sys/module/cpu_boost/parameters/migration_load_threshold 15
/sys/module/cpu_boost/parameters/load_based_syncs Y
/sys/module/cpu_boost/parameters/shed_boost_on_input N
/sys/module/cpu_boost/parameters/input_boost_ms 300
/sys/module/cpu_boost/parameters/input_boost_enabled 1
/sys/module/msm_performance/parameters/touchboost 0
/sys/module/msm_thermal/core_control/enabled 0
/sys/module/msm_thermal/parameters/enabled Y[/COLOR]

Explanation:

go_hispeed_load: Anything between 85-94 is average by my tests, it tends to stick to hispeed_load 40-60 which is what I think would be "optimal" for our cat.

above_hispeed_delay: The most important part of our tweak along with input_boost. This should set up the perfect "delay" so cpu cores could adjust and decide before ramping up to higher frequencies. Our frequency set as hispeed from little cluster is 600000.

target_loads: We won't be dwelling much in this. We put a small amount so that our frequency could ramp up if needed and take a pause on frequencies we deemed to be really significant; 600mhz, 672mhz, 960mhz and 12348mhz. Along with hispeed_delay, it should provide low consumption and tend to stick on 384mhz and 600mhz 89% of the time.

timer_slack: Put it to 380000, just trust me.

max_freq_hysteresis: Asking why theres jitters and a bit of stuttering on your screen? this is the culprit. Turn it to 0 and you will be fine as long as you correct the other tunables. This is because hysteresis actually uses "former" frequencies to calculate which frequency would be best to ramp up to next. If you tend to stick to lower frequencies more, with this on then you will be sticking at low frequencies almost forever, which obviously isn't something good.

input_boost: Now, to explain why this is important; there are two things I would like to emphasize. (1) One, this value was made so that under the hood tasks as well as simple bumps to your frequency if there is a notification, sync etc. would be possible. (2) this value is extremely useful to provide that quick boost to complete tasks with ease. The big clusters would have an input_boost of 633000 which was supposed to be the stock mhz. Why? I deemed that the big cluster isn't that necessary unless you are running an extremely graphic heavy game. So tone it down to 384mhz underclocking it and provide input boost to the mhz that was supposed to be the stock frequency, increasing battery life without sacrificing anything.

Will this be updated?

NO, NEVER.

I am asking myself why does this other "tweaks" update from time to time if there are no kernel parameters that are changing? Aren't all those tweaks supposed to be tested hundreds of times before releasing? Then why change the parameters again? Am I asking too much? Am I fat? NO. Just NO. EXCEPT if there will be changes within the interactive parameters then sure.

Credits: [MENTION=5886947]soniCron[/MENTION], [MENTION=5323968]xSilas43[/MENTION], [MENTION=5893314]shadowstep[/MENTION] for pointing out the missing timer_slack and input_boost, google for many things to read, this website for music while typing, that website for providing me more things to read, a bucket of fries and two chickens to make me company.

Go ahead and feel free to download the .txt file below and happy tweaking!