I checked the original thread, but it's 100 pages long; It'd take me forever to go through it. I like understanding the settings so I can custom tailor things to my liking; and the variable names themselves aren't very indicative of what they change to someone who hasn't seen them before. But if I can't find a table showing the variables and what they represent, then I hope at least I can get some help with a specific change I'd like to do.
I ask because I am noticing a bit of a pause when it ramps up the processor from idle. I notice it most when I swipe the home screen using ADWLauncher EX. The first swipe sort of chugs a bit, but afterwards it becomes glass smooth, so I figure it's a ramping issue where the kernel's wound down the cores to rest and when I interact with it it's not winding them up again fast enough; probably not stepping up fast enough.
I want to change the settings a bit so that in the initial step it'll wind up over what's necessary, and then wind down to what's needed. It'll improve apparent response time, and with how much this battery lasts, spending a bit more is not an issue to me. Any idea or help on doing this change will be very appreciated.
Thanks for any help, and my apologies if this has been answered before; the forums are a bit hard to navigate sometimes.
I guess I had to write this some time or another. I just also put this into the main thread.
sampling rate
The default time in-between governor scaling "ticks" where the governor checks CPU load and triggers its scaling logic. Measured in milliseconds (ms).
up threshold
The threshold percentage of load from the last sampling window in which the governor triggers its
up-scaling logic.
sampling down factor
If the up-scaling logic reaches the max policy; i.e. the maximum allowed frequency, the governor will disregard all logic for
x amount of samples and stay at that frequency until we do another scaling sample.
ignore nice load
Processes with higher priorities can have an augmented reported load value, but we can differentiate this and ignore them if this is checked. Keep it at 0.
io is busy
I/O interaction is seen as a CPU load bearing activity. This isn't true for our architecture so keep it at 0.
down differential
The CPU down-scaling logic threshold is triggered if load is less than (up threshold - down differential). The down differential acts as a buffer so that we don't uselessly scale back up in near threshold level loads. If the down-scaling conditions are met, the CPU will take the current CPU load and derive the next best frequency that would accommodate that frequency without triggering an up threshold.
freq step
When the up-scaling logic is triggered the governor dictates the CPU to raise its frequency by (max policy * (freq step / 100)). If max policy is currently 1600 and freq step 21%, it will scale 1600 * 21% = 336. We have a 100MHz grained frequency table so it rounds up to the next 100MHz, 336 becomes 400. If we're idling at 200MHz and the up-scaling logic gets triggered with the above settings, the next frequency will be 600MHz.
cpu up rate
The amount of samples the hotplug logic will collect before it makes a hotplug decision to bring up a CPU.
cpu down rate
The amount of samples the hotplug logic will collect before it makes a hotplug decision to bring down a CPU.
up nr cpus
If the hotplug logic decides we need to bring CPUs up, the amount of CPUs we bring up at once is being dictated here.
max cpu lock
The maximum allowed amount of CPUs allowed to be up at the same time.
min cpu lock
The minimum allowed amount of CPUs allowed to be up at the same time.
hotplog lock
If set other than 0, locks the CPU up count at the specified amount.
dvfs debug
DVFS and hotplug debug is printed out in /proc/kmsg if this is enabled.
hotplug freq x y
Hotplug frequency threshold which decide if we should trigger a hotplug-up or a hotplug-down.
X marks the current amount of cores. Each state has a trigger-down (
Y = 0) or a trigger-up (
Y = 1) condition.
Example: "hotplug freq 3 0 500000" If there are currently 3 cores up, and the frequency gets below 500MHz
and the hotplug rq 3 0 conditions for this state are met too, then bring down the core count to 2.
hotplog rq x y
Similar to the hotplug freq conditions in syntax, only that here we are measuring the amount of threads waiting in the kernel runqueue as opposed to frequency. The kernel runqueue is a queue where threads are waiting to be executed. Every
cpu up rate or
cpu down rate amount of samples, we accumulate the average snapshots of amount of threads in every sampling window. The value itself is this average, just in integer form multiplied by 100. If set to 175 for example, we need to have at least 1.75 threads running over the last cpu-(up/down)-rate * samples to trigger the condition. Live statistics can be extracted by enabling dvfs_debug to see this.
up threshold at min freq
We have the scaling frequencies divided in two parts: ones governed by up_threshold and ones governed by up_threshold_at_min_freq. We want the CPU to get out of the lower frequency states faster to improve fluidity, and also to improve power consumption as the lower power states are more inefficient in perf/power for fixed load tasks over time. The same logics apply as with up_threshold.
freq for responsiveness
Frequency threshold below which up_threshold_at_min_freq is taken instead of up_threshold.
flexrate enable
Enable flexrate requests. Flexrate requests temporarily dramatically raise the sampling rate / lower the sampling period.
flexrate forcerate
Ignore in-putted values given to the governor and use this instead as the accelerated rate.
flexrate max freq
Frequency threshold above which flexrate requests are ignored.
flexrate num effective usage
A statistic of amount of samples taken at the accelerated rate.
lcdfreq enable
Enable LCD frequency scaling.
lcdfreq kick in down delay
The amount of samples below kick-in-freq the CPU must reside for it to switch to the lower display frequency.
lcdfreq kick in freq
The threshold frequency below the CPU must be for the display to switch to lower display frequency.
And for what it matters, I find Nova Launcher the smoothest of them all.