Categories: Android

Android Kernel-Governors, Modules, I/O Schedulers

Android Governors

This is translated from a German post on an XDA-like forum, It’s a good place to start with Governors and the likes. I have changed the dialogue to make a bit more sense in English.

Original Post Here: http://www.usp-forum.de/google-android-forum/86771-faq-kernel-governors-modules-i-o-schedulers.html

Many thanks to Meccs from the Android forum.

What is a governor?

A governor is a driver for the regulation of CPUFreq – The CPU frequency in Andorid.
Settings the Max and Min frequencies determines the CPU Core response and medium frequency. The governor determines how long the CPU core should remain at that frequency after it’s been requested. Keeping a CPU core frequency high will impact on battery life.

There are many types of governors. Some are for single-core processors and some designed for dual-core processors. In stock kernel, there are five governors and quasar kernel, there are a lot more.

What are the governors are there?

these are the 22 Governors I have come across so far:

  1. Ondemand
  2. Power Save
  3. Userspace
  4. Conservative
  5. Performance
  6. Interactive
  7. Interactivex
  8. Smartass
  9. Smoot hatred
  10. Brazilianwax
  11. SavagedZen
  12. Minmax
  13. Scary
  14. Lazy
  15. Lulzactive
  16. Lagfree
  17. SmartassV2
  18. Ondemandx
  19. Intellidemand
  20. Lionheart
  21. Sleepy
  22. Hyper

Sleepy

Sleepy (formerly known as Solo) is an attempt to strike a balance between performance and battery power.
It is based on the getweakten Ondemand of Arighi and is optimized for the SGS2.
It may include imoseyon’s Ondemandx with some tweaks Down_sampling and
other features that set by the user through the sysfs of “echo” call. Sleepy is the behavior of Ondemandx when he is in action, very similar.

Conservative

It is rather a slow of its kind and is more of a slower Ondemand, which scaled up slowly to preserve the battery. To illustrate an example to hand of the Ondemand. The Ondemand increased interactivity of the smartphone at a frequency up to MaxFreq. The Conservatives on the other hand does slow down by half, saving battery power, but at the expense of performance.

Ondemand

The Ondemand governor is the default choice, due to its balanced settings that offer a good compromise between battery power and
performance. However, he has no profile when you turn off the display (screen off sections) or for waking up the phone and respond to inputs with the same high jumps to perform.

Power Save

This corresponds to the governor of MaxFreq minFreq. For everyday use, this governor is not recommended.

Userspace

Here, individual settings instead of automatic defaults are set. Whether it works and how, apparently, no one knows. It’s funny.

Performance

This corresponds to the minFreq MaxFreq, exactly the reverse of the Great Power, which means that the performance governor getting the maximum frequency is set, forcing the battery to its knees. Is thus only be used for benchmarks.

Interactive

This governor is more of a faster Ondemand. Slightly faster and battery-friendly. Instead of regular requests in each interval as the Ondemand,
determined as he scaled the Interactive when the CPU is woken from sleep. He is an intelligent optimization because of its stability Ondemand. This is the most popular governor in recent years.

Interactivex

This is an interactive with profiles and wake-up is also battery friendly than interactive. He basically has the same performance as the Interactive, only with better battery performance.

Smartass

This is the predecessor of SmartassV2. It limits the MaxFreq when the screen is off. He is not very battery friendly as the SmartassV2. This is because the higher MinFreq when the display is less than the frequency scaling during standby.

Smoot hate

This governor is also a reamed Smartass, which is only slightly scaled faster, with the result that these are still somewhat softer and more
responsive, but is also at the expense of battery consumption.

Brazilianwax

It is similar to the SmartassV2, only more aggressive scaling up, resulting in more power consumption and battery with it.

SavagedZen

Another SmartassV2 governor. He achieved a good balance between performance and battery consumption, and is actually underestimated.

Scary

This is one of the strangest governors.
It is based on the Conservative, who is known for its slow scale, but in turn, have elements of Smartass, in turn, is known as one of the
fastest skalierfähigen Governor. Some people report that they were fascinated by him. Just hearsay.

Lazy

This governor of Ezekeel is basically one based on the Ondemand, with the only additional parameter min_time_state, which maintains the minimum time of the CPU on a frequency before scaling up and down. These instabilities are due to rapid change in frequency, such as avoiding the Ondemand. The Lazy governor is indeed more inquiries than the Ondemand, but the frequency changes only after the min_time_state, which goes something like step by step (only 200 MHz, 300 MHz, then 400 MHz, etc.). What’s more, the Lazy-governor of the house, turning off the display parameters (Screenoff_maxfreq) brings, that you can adjust what may be the highest frequency in MHz when switching off the display.

Lulzactive

This governor is still fairly new and comes from tegrak. It is based on both the interactive and on the Smartass governor. The slightly older version, if greater than or equal to 60% on their workload, the Governor scaled the CPU to the next level. When the workload was less than 60%, then the governor, the CPU scaled to the next lower level. And when the screen was turned off, then the CPU to the lowest scalable frequency has been locked.
The new version: This version includes three additional configurable parameters. inc_cpu_load, and pump_up_step pump_down_step. These parameters help the user to a greater degree of control. Thus, one can define abzuskalieren the threshold at which the Governor decides to or. You can also specify a certain number of frequency steps that should be skipped when querying.

MinMax

This governor was a pleasant surprise. Although he leans to the Conservative, he will probably have the best performance of all. He probably did have a slightly worse battery life performance as the SmartassV2, but to the best freshness, which is why he is also the default governor in Nova kernel.

Lagfree

Again, this is similar to the Ondemand governor. The main difference is that it is much battery friendly. The frequency is set to either soft or smooth down raised, unlike the Ondemand, the increase in inquiries rather equal to 100%, although not used. The Lagfree increases so gradually and no skips while the CPU frequency scaling. This also means that the Governor in acute severe power demand does not immediately rise to 100%, and thus to stuttering, such as can occur during video playback.

SmartassV2

This is a revised version of the governor of erasmux Smartass. This governor is pursuing the goal of achieving an ideal frequency and attempts to achieve this aggressive and lose less aggressive. He uses different frequencies ideal for switching on and switching off the display. If the display is off, the governor scaled down very quickly (aggressive) and scale of the display when you turn quickly to up to 500 MHz. In contrast to the little brother Smartass, there is no limit on the frequency when the display is off. In this governor is also about a balance between performance and battery life.

Intellidemand

The Intellidemand aka Intelligent Ondemand is another faux Governor, based on Ondemand. But believe some users, this is not a substitute for OC governor daemon. The original Intellidemand behaves differently depending on the GPU usage. If the GPU is really busy (games, cards, benchmarking, etc.) that behaves like the Ondemand.
If the GPU is in “neutral” is (that is, claimed more moderate), limiting the maximum frequency of Intellidemand to save depends on the
available frequencies in your device or your kernel to conserve battery power. This is known as browsing mode. We can also find some “traces” of the interactive governor. Frequency-scaling in the lower segment depends on the idle time of the CPU. Low idle-time (<20%) implies a reduction of the frequency-scaling of the current frequency. Frequency scaling reductions occurred in 5% increments from the current frequency.
In summary we can say that this is an intelligent Ondemand governor, who is limited by the browsing mode, the maximum frequency when the GPU
is idle, and if the browsing mode is available, it behaves like the Ondemand if the GPU is not fully utilized. Even the Intellidemand not switch to the highest frequency when the screen is off.

Lionheart

The governor is an optimized Lionheart Conservative governor and it also came from Knzo. It is tuned for extreme performance and responsiveness, unfortunately at the expense of battery power.

Ondemandx

This is actually a Ondemand governor, with the only difference is that he brings home from profiles of the switch off and switch on the display. The Governor was created in order to be more battery friendly. If the screen is off, the maximum frequency is set to 500 MHz. In spite of the fact that the Ondemand is present in many kernels as it is considered stable, the support of the Ondemandx far-reaching, because in spite of the fast switching frequency and thus has a low transition delay is just too friendly battery. In this play governor, unlike other Governorn, the I / O schedulers a major role.
He also has the Arighi’s fast_start deep_sleep and detection features. In addition, the maximum frequency is in suspend mode 500Mhz.

Hyper

The Hyper (formerly known as kenobi) is an aggressive smart and smooth, optimized for SGS2 getweakt and, based on the Ondemand, which was getweakt of Arighi and was equipped with several features of Ondemandx suspend imoseyon. (Added by sysfs, the settings suspend_freq and suspend Imoseyon’s code) is the behavior of the hyper Ondemand if he is in action, very similar. He also has the Arighi’s fast_start deep_sleep and detection features. In addition, the maximum frequency is in suspend mode 500Mhz.

What is a scheduler?

In a multitasking operating system, there must be an instance, the processes that want to run, CPU time and allocates it “goes to sleep” after the allotted time (timeslice) again. This instance is called the scheduler, such as opening and closing applications. that is, how fast they are open and how long they are kept in RAM.

I/O scheduler can have many purposes like:

  • To minimize time searching on the hard disk
  • Set priorities for specific process requests
  • To regulate a particular portion of the bandwidth of the data carrier to each running process
  • To guarantee certain process requests within a certain time

Which scheduler are available?

  1. CFQ
  2. Deadline
  3. VR
  4. Simple
  5. Noop
  6. Anticipatory
  7. BFQ
  8. Sio

Anticipatory

Two important things here are indicative of that event:

  • Looking on the flash drive is very slow from Equip
  • Write operations while at any time are processed, however, be read operations preferred, ie, this scheduler returns the read operations a higher priority than the write operations.

Benefits:
– Requests of read accesses are never treated secondarily, that has
equally good reading performance on flash drives like the noop

Disadvantages:
– Requests from process operations are not always available
– Reduced write performance on high-performance hard drives

CFQ

The CFQ – Completely Fair Queuing – similar to the Dead Line maintains a scalable continuous Prozess-I/O-Warteschlange, ie the available I / O
bandwidth tried fairly and evenly to all I / O requests to distribute. He created a statistics between blocks and processes. With these statistics it can “guess” when the next block is requested by what process, ie each process queue contains requests of synchronous
processes, which in turn is dependent upon th priority of the original process. There is a V2 and the CFQ has some fixes, such as were the I / O
request, hunger, and some small search backward integrated to improve the responsiveness.

Benefits:
– Has the goal of a balanced I / O performance to deliver
– The easiest way to set
– Excellent on multiprocessor systems
– Best performance of the database after the deadline

Disadvantages:
– Some reported user that the media scanning would take this very very long time and this by the very fair and even distribution of bandwidth
on the I / O operations during the boot process is conditioned with the media scanning is not necessarily the highest should have priority
– Jitter (worst case delay) can sometimes be very high because the number of competing with each other process tasks

Deadline

This scheduler has the goal of reducing I / O wait time of a process of inquiry. This is done using the block numbers of the data on the drive. This also blocks an outlying block numbers are processed, each request receives a maximum delivery time. This is in addition to the Governor BFQ very popular and in many well known kernels, such as the Nexus S Netarchy. He was indeed better than the BFQ, but compared to the VR he will be weaker.

Benefits:
– Is nearly a real-time scheduler.
– Characterized by reducing the waiting time of each process from – best scheduler for database access and queries.
– Bandwidth requirements of a process, eg what percentage does a CPU is easy to calculate.
– As the Governor-noop ideal for flash drives

Disadvantages:
– If the system is overloaded, can go a lost set of processes, and is not as easy to predict

SIO

It aims to achieve with minimal effort at a low latency I / O requests. Not a priority to put in queue, instead simply merge the requests. This scheduler is a mix between the noop and deadline. With him there is no conversion or sorting of requests.

Benefits:
– It is simple and stable. – Minimized Starvations (starvation) for inquiries

Disadvantages:
– Slow random write speeds on flash drives as opposed to other schedulers. – Sequential read speeds on flash drives, not as good

Noop

The noop scheduler is the simplest of them.
He is best suited for storage devices that are not subject to
mechanical movements, such as our flash drives in our SGSII’s to use to
access the data. The advantage is that flash drives do not require rearrangement of the I / O requests, unlike normal hard drives. ie the data that come first are written first. He’s basically not a real scheduler, as it leaves the scheduling of the hardware.

Benefits:
– Adds all incoming I / O requests in a first-come-who-first-served queue and implements requests with the fewest number of CPU cycles, so also battery friendly
– Is suitable for flash drives because there is no search errors
– Good data throughput on db systems

Disadvantages:
– Reducing the number of CPU cycles corresponds to a simultaneous decline in performance einhergehendem

VR

Unlike other scheduling software, synchronous and asynchronous requests are not handled separately, but it will impose a fair and balanced
within this deadline requests, that the next request to be served is a function of distance from the last request. The VR is a very good scheduler with elements of the deadline scheduler. He will probably be the best for MTD Android devices. He is the one who can make the most of the benchmark points, but he is also an unstable schedulers, because his performance falter. Sometimes they fluctuate below the average, sometimes it fluctuates above the average, but if above, then he is the best.

Benefits:
– Is the best scheduler for benchmarks

Disadvantages:
– Performance variability can lead to different results
– Very often unstable or unzverlässig

Simple

As the name suggests, it is more of a simple or simple scheduler. Especially suitable for EMMC devices. He is reliable, maybe not as good as the VR, when this time has a good day, but he is despite all this very performance-based and does his best. At the moment it is the default scheduler in quasar kernel.

Advantages: – not known
Cons: – not known

BFQ

Instead requests divided into time segments as the CFQ has, on the BFQ budget. The flash drive will be granted an active process until it has exhausted its budget (number of sectors on the flash drive). The awards BFQ high budget does not read tasks.

Benefits:
– Has a very good USB data transfer rate.
– Be the best scheduler for playback of HD video recording and video streaming (due to less jitter than CFQ Scheduler, and others)
– Regarded as a very precise working Scheduler
– Delivers 30% more throughput than CFQ

Disadvantages:
– Not the best scheduler for benchmarks – higher budgets that were
allocated to a process that can affect the interactivity and bring with
it increased latency.

How can I change the governor and scheduler?

There are two ways to change the governor and schedulers, as well as the settings for the Governorn. Either manually, in which you use a file manager like Root Explorer and then knows how to / sys / devices / system and then change the files to his wishes, provided you what you’re doing, or via a graphical interface or by phone as SetCPU Voltage Control. These are the most prominent apps when it comes to adjusting the governor and / or scheduler.

  • SetCPU are, besides the possibility of the clock speed of the CPU,
    setting profiles in certain situations, only to change the way the
    governor. The scheduler can not change it.

  • Voltage control can alter both the governor and the scheduler, but has no way to adjust behavior profiles. While you can set various overclocking, Governor and scheduler profiles manually, but nothing more. Nevertheless, I prefer the VC, since it is simple and gives me the opportunity to change the scheduler.

Share
Leave a Comment