[Asus Transformer TF700] lucius.zen:
Optimizations that Improve Efficiency, Stability, and Performance

Hey Guys,

After tweaking the kernel in order to run 1.9Ghz in quad core mode with the GPU at 775Mhz I decided to make some more improvements (see post #794). Although my tweaks were stable and fairly efficient they focused on allowing me to maximize performance. While I was able to max everything, it wasnt necessarily the most optimal, efficienct, and stable set up. Ive basically spent the last 2 days applying what Ive learned about maximization to optimization. Instead of asking "what is the maximal settings i can get?" I started asking "what are the optimal settings I can get? Considering both real world and benchmarking performance, efficiency, stability, and usability for others". Yes, thats right, I wasnt just thinking about myself this time around lol. Needless to say, my efforts have been successful. So much so that I have deleted all the backups of my old tweaks and mods, even my TWRP backups. This is by far my best work. After all this time tweaking and meticulously testing Ive gotten a really good feel for what our cpu likes and dislikes.

I really hope you guys try these tweaks out. I truly believe these will allow a lot more people to run the CPU and GPU at 1.9Ghz and 775Mhz.

Thanks again to Hundsbuah for making all of this possible with his unreal kernel.

Profiles:

I spent a lot of time looking at how the cpu behaved in specific tasks and optimized the cpu profiles to suit general cases of use. The main consideration of these profiles is to reduce lag and optimize the overall experience during spefic tasks. As such, the default names dont actually make sense. The profile with the lowest power consumption and best general use is set to balanced mode rather than powersaver to reduce heat during boot and the need to switch profiles. I set a dual core and quad core mode for each to increase efficiency and the range of freq used by the cpu in each profile (youll hear more about this later!).

Powersaver - Optimized for productivity and media consumption (best keyboard performance and latency, smoothest multitasking, best rendering of Bluray quality video)

GPU - 1460mV

CPU - 1.85Ghz Dual Core, 1.8 Quad Core

Balanced - Optimized for general use (best for browsing and streaming, lowest settings possible while still avoiding all general UI lag)

GPU - 1460mV

CPU - 1.75Ghz Dual Core, 1.7Ghz Quad Core

Performance - Optimized for kickin' ass and takin' names (best benchmarking and performance while remaining stable and efficient - benchmark scores are only 50pts below 1.9Ghz quadcore)

GPU - 1460mV

CPU - 1.9Ghz Dual Core, 1.85 Quad Core

* You should be able to run all 4 cores at 1.9 ghz at a voltage of 1350mV, however, having seperate dual and quad core modes is more efficient - if getting ridiculously high benchmarks scores turns you on, that is the set up for you lol.

Voltage Table:

This voltage table just makes sense. The voltages are scaled proportionately to the distance between each frequency step. The cpu freq steps start small, get bigger, then gradually get smaller again. The voltage table follows this pattern. It does so smoothly, logically, and predictably. There are no "surprises" to the cpu, and it suits how the cpu deals with changes in workload. It should be more usable to most users because the undervolting is a lot less severe than my usual tables, making it more stable. However, heat doesnt go up at all because it is much more efficient. I used to generate too much heat to run 1.9Ghz at 1360mV so i sacrificed stability and dropped my voltages. I can still run 1.9Ghz without a sweat with this table and dont sacrifice any stability.

1360 1320 1280 1240 1200 1150 1100 1050 1000 950 900 860 820 780 750 720 700

* if your getting too much heat you could drop 1.9 to 1350 (what I have running) - or 1.85 to 1310 and 1.9 to 1340 if your having heat issues and your CPU takes well to UVing

Governor Tweaks:

These tweaks allow the cpu to hit more frequency steps. With the initial 2.2 governor settings and voltage table many frequency steps were being missed, which means the cpu jumps from low freq to high freq more than it needs to. This reduces efficiency and increases heat, which prevents us from running 1.9ghz at a rock solid voltage. These tweaks allow the entire range of freq to be used, prevent the cpu from needless scaling, and stops cpu consumption % from jumping all over. These tweaks increase efficiency, thus reducing heat production and increasing stability. The tablet sheds heat really fast, following benchmark tests I am back to my idle baseline temp in 45s.

go_hispeed_load - 85 (go to max freq when at or above this cpu load)

go_maxspeed_load - 85

min_sample_time - 40000 (the minimum amount of time to spend at a freq step before scaling down - the interactive governor samples cpu load every 2 seconds - if freq is not enough for the workdload the cpu is scaled up, if freq is more than enough for the workload the cpu is overpowered and scaled down - at default the cpu must spend at least 3 sec at a freq before it can scale down, which doesnt make sense if the cpu is set on a 2 sec timer - a 4 sec min downscaling delay makes sense, the timer needs to sample workload twice before scaling down - workloads tend to fluctuate drastically, we dont want the cpu to scale down if it is just going to have to ramp up again 1 sec later, that is really inefficient cpu behaviour, the queue isnt cleared as quickly and cpu never goes to idle, cpu consumption is all over the place - why not set the timer to 4 sec then? - if we were to set the timer to 4 sec the cpu wouldnt be able to scale up as quickly in response to higher workloads bc the governor isnt sampling workload as often - having a 2 sec timer allows the cpu to scale up quickly, a 4s down scale delay prevents the cpu from dropping too quickly, giving us best of both worlds)

Init.d Scripts:

The order of your init.d scripts can affect boot times. I modded the order to optimize boot times and reduce cpu heat during boot. First off, deleting the 90Hundsbuah and 99CleanTweaks scripts will drastically reduce boot times and heat. The first script that should be executed are your kernel tweaks. Doing this asap will reduce heat. After all your kernel tweaking scripts Hundsbuahs 99bootcompleted script should be executed. Here are the scripts im using and the names given them to set the order. The naming also allows me to insert a new script before or after any script without ever having to rename other scripts.

01ZenKernelTweaks

89Fsync

99bootcompleted

zzCrossBreeder_initd

These tweaks were implemented on a completely fresh install of CROMI 3.4.7 and HK v2.2, with D2SD and Cross Breeder mod (from CROMI install), without any tweaks from any apps or other mods. The results I am getting now are certainly better overall than what I saw from my previous tweaks (see post #794 for details and results). These are definitely optimal tweaks rather than maximal tweaks, however, my benchmark scores havent dropped and general performance is smoother overall. Getting max performance was difficult (i didnt start out being able to run 1.9Ghz and 775 Mhz GPU); however, once I got there I could work backwards and build a really solid system overall. If you couldnt run 1.9 in the past, even with my other tweaks, then these should definitely help you out. In the past I had to resort to pretty extreme tweaks to run 1.9Ghz CPU and 77Mhz GPU, they worked but they compromised stability for maximum power. These new tweaks drastically improve efficiency and allow me to run 1.9Ghz at much stabler voltages and settings. Therefore, these should work for a much wider range of tablets unlike a lot of my previous tweaks that were more device specific.

Just touced my top left corner.....sh*ts icy son. lol.

Happy tweaking,

Lucius