CPU Governors

Each phone offers a list of governors which can differ from phone to phone, manufacturer to manufacturer. Custom Kernels can even implement their own governors.

The governor is the algorithm used to control the CPU frequencies between the defined minimum and maximum frequencies. It is always possible to change those min/max frequencies, but the governor will decide how to regulate it between those min/max.

Here is a list of most used governors and how they control CPU frequencies:

  • Performance: frequency is always set to the max frequency. Maximum battery usage
  • Powersaver: frequency is always set to the min frequency. Minimum battery usage
  • OnDemand: frequency raises when CPU load (%) goes beyond a threshold and decreases when it goes below another threshold.
  • Interactive: same as OnDemand except it automatically and slowly decreases back to min frequency. Usually consumes more than OnDemand.
  • Hotplug: Only available on some phone/custom kernels with dual cores. It is used to turn off one of the core when load is below a given threshold.

Note that custom Kernels or manufacturers can predefine various thresholds and even different governors than those above.

Usually the OnDemand and Interactive thresholds can be set (in the boot settings of the app).

Best and most used up-thresholds for OnDemand is 65% and 25% for down-threshold.

The Interactive up-threshold is also mostly set at 65%.

Raising the up-threshold will make the device less reactive. Raising the down-threshold will keep device responsive but consume more.

 

Another factor is used with this 2 governors, the sampling rate, which is the rate in micro-seconds to check the CPU load. Increasing the value decreases responsiveness and vice-versa. Custom ROM mostly set this value between 10 and 15 milliseconds.

I tend to believe that setting is similar to the down-threshold, though I suspect it just reacts stightly differently.

Anyway 25% for the powersave bias is the most frequently used setting on custom ROMs on XDA.