[Google Pixel ROMs, Kernels, Recoveries, & Other De] Freak07:
Update to 0.10

hey guys and girls,

it took quite a time but here is finally an update.

I did experiment a lot for this. my progress was quite slow.

However here are a few things of what´s going on and how I plan to move forward.

if you read the documentation about EAS there are two ways of scheduling the tasks. WALT and PELT.

here are the summaries:

Per-Entity Load Tracking (PELT) implements load-tracking for the SCHED_NORMAL

scheduling policy a on per scheduling entity basis. Load stands for the actual load (a metric

based on a sched-entity's runnable time, i.e. time spent on the run queue plus time spent

running) and utilization (a metric based on a scheduling entity's running time).

The fact that historical behaviour of a scheduling entity becomes increasingly less relevant

with age when trying to draw conclusions about its future compute requirements is

incorporated by using a geometric series for each of the two metrics. This has the natural

effect of decreasing the relevance of the accounted time in each time slice as they age.

PELT's bottom-up load-computation (scheduling entities contribute to the load of their

parents’ (run-queues or task groups) allows the correct migration of load for an entity along

with its accompanying entities. This provides the right metric for intelligent load-balancing

especially when task groups are involved.

Window Assisted Load Tracking (WALT) provides a window based view of time in order to

track the demand and CPU utilization of tasks. A "window" is a (compile time) configurable

time duration, by default 20ms, which is used to collect a new "sample" for both task

demand and CPU utilization. The start of a new window is synchronized across all the

CPUs in the system. A "sample" measures:

- how long a task was RUNNING, within the corresponding window

- how long a CPU was BUSY, within the corresponding window

Samples are normalized to 1024, which represents the maximum utilization for both a task

and a CPU. Thus, a 1024 sample means that a task was running for the whole duration of

the corresponding window or, similarly, that a CPU was busy for the whole duration of the

corresponding window.

Similar to PELT, WALT samples are also scaled such that they are architecture and

frequency invariant. Architecture scaling compensates for the possibly different maximum

capacity of CPUs while frequency scaling compensates for time spent running at different

frequencies. Thus, for example a sample of value 512 is measured for a task running for

the whole sample window duration but at a frequency which also provides half of the

capacity of the CPU with the maximum capacity in the system.

The demand of a task is estimated by WALT considering the last N "non zero" collected

samples, where N is a compile time configuration which is set to 5 by default. Thus,

samples are collected for a task only for windows where the task had a chance to run.

From all the collected samples the task utilization is estimated based on an "aggregation

policy" which can be selected at compile time.

here is the whole documentation: https://www.google.de/url?sa=t&rct=...9YJNnS2LBH6n7qIQg&sig2=Uz207OofHHGqkQmaIxZk1w

My kernel uses WALT and I plan to use it in the future too. there is however a little problem.

by default most roms have touchboost and a value integrated in the power hal, which sets top app boost to 50 and provokes an input boost.

Both of this is absolutely not needed with WALT. It is not mandatory to turn both off, but recommended.

So how do you turn this off. As a workaround the newest update from [MENTION=4684315]flar2[/MENTION] ´s EX Kernel Manager lets you turn off perfd in the CPU tab. Turning it off will solve all this. But other things you will loose I dont know. Perfd binary is encrypted. I had it turned off for 2 days and didn´t notice any issue, so I guess it will safe.

I also compiled myself a rom that has the input boost and the false setting of top app boost removed from the Power Hal. Maybe I will talk to, or you can ask your favorite rom developer to remove the boost too. This however will cause PELT based kernel not to work properly.

So anyway, here is the Changelog:

0.10

- all security patches

- some patches that may help with efficiency

- many patches to schedutil,sched, and walt (many)

- few patches to sdcardfs

- tuned WALT values a bit

- other things I forgot, check my github

have fun with it :)

download link is in the OP and here for the lazy ones :D

https://www.androidfilehost.com/?fid=457095661767142802