[YU Yureka General] ela1103:
Thank to zhanjia & Andrux​

I Search about Governors And I/O Schedulers in Google & XDA

Iam sharing this information to our yu Team members .because the Governors And I/O Schedulers is the main part of the Kernels .

Governors And I/O Schedulers

1.Performance

2.Battery

3.Gaming

4.Laging

5.Multitasking ​

CPU Governors​

What is a CPU governor?​

A CPU governor in Android controls how the CPU raises and lowers its frequency in response to the demands the user is placing on their device. Governors are especially important in smartphones and tablets because they have a large impact on the apparent fluidity of the interface and the battery life of the device over a charge.

NOTE: You cannot change your CPU governor unless your phone is rooted and you have a ROM or app that lets you make a change. Also, different kernels (the intermediary software between your phone's hardware and the operating system) offer different sets of governors.

Available CPU governors:

OnDemand

Conservative

Interactive

Performance

Powersave

Scary

Userspace

Smartass

SmartassV2

Smoothass

Brazilianwax

SavagedZen

Lagfree

MinMax

Interactivex

OnDemand

OnDemand

Available in most kernels, and the default governor in most kernels. When the CPU load reaches a certain point, OnDemand will rapidly scale the CPU up to meet the demand, then gradually scale the CPU down when it isn't needed.

Review

Brief says all. By a simple explantion, OnDemand scales up to the required frequency to undergo the action you are doing and rapidly scales down after use.

Conservative

It is similar to the OnDemand governor, but will scale the CPU up more gradually to better fit demand. Conservative governor provides a less responsive experience than OnDemand, but it does save batter

Review

Conservative is the opposite of Interactive; it will slowly ramp up the frequency, then quickly drops the frequency once the CPU is no longer under a certain usage.

Interactive

Available in latest kernels, it is the default scaling option in some stock kernels. Interactive governor is similar to the OnDemand governor with an even greater focus on responsiveness.

Review

Interactive is the opposite of Conservative; it quickly scales up to the maximum allowed frequency, then slowly drops the frequency once no longer in use.

Performance

Performance governer locks the phone's CPU at maximum frequency. While this may sound like an ugly idea, there is growing evidence to suggest that running a phone at its maximum frequency at all times will allow a faster race-to-idle. Race-to-idle is the process by which a phone completes a given task. After that it returns the CPU to extremely efficient low-power state.

Review

Good at gaming, Really good. Disadvantages are it may damage your phone if too much usage.

Powersave

The opposite of the Performance governor, the Powersave governor locks the CPU frequency at the lowest frequency set by the user.

Review

Set it to your desired minimum frequency and you won't have to look for your charger for once in a while.

Scary

A new governor wrote based on Conservative with some Smartass features, it scales accordingly to Conservative's way. It will start from the bottom. It spends most of its time at lower frequencies. The goal of this is to get the best battery life with decent performance. It will give the same performance as Conservative right now.

Review

Hmm.. Overall I don't see any difference. After I understand its main objective. I was very curious and decided to use it again. Results are the same.. No difference. Report to me if anyone has tested this.

Userspace

Userspace is not a governor pre-set, but instead allows for non-kernel daemons or apps with root permissions to control the frequency. Commonly seen as a redundant and not useful since SetCPU and NoFrills exist.

Review

Highly not recommended for use.

Smartass

It is based on the concept of the Interactive governor.

Smartass is a complete rewrite of the code of Interactive. Performance is on par with the “old” minmax and Smartass is a bit more responsive. Battery life is hard to quantify precisely but it does spend much more time at the lower frequencies.

Review

Smartass is rather the governer that will save your battery and make use of your processor for daily use. Like the brief explantion said " Smartass will spend much more time on lower frequencies." So logically you don't need for sleep profiles anymore.

SmartassV2

Theoretically a merge of the best properties of Interactive and OnDemand; automatically reduces the maximum CPU frequency when phone is idle or asleep, and attempts to balance performance with efficiency by focusing on an "ideal" frequency.

Review

This is a much favourite to everybody. I believe almost everyone here is using SmartassV2. Yes, it is better than Smartass because of its speed no scaling frequencies from min to max at a short period of time.

Smoothass

A much more aggressive version of Smartass that is very quick to ramp up and down, and keeps the idle/asleep maximum frequency even lower.

Review

In my personal experience, this is really useful for daily use. And yes, I'm using it all the time. It may decrease your battery life. I saw it OC itself to 1.4 gHz when I set it to 1.2. Good use. Recommended.

Brazilianwax

Similar to SmartassV2. More aggressive scaling, so more performance, but less battery.

Review

Based on SmartassV2. But its advantage is a much more performance wise governor.

SavagedZen

Another SmartassV2 based governor. Achieves good balance between performance & battery as compared to Brazilianwax.

Review

Not much difference compared to SmartassV2. But it is a optimized version of it.

Lagfree

Again, similar to Smartass but based on Conservative rather than Interactive, instantly jumps to a certain CPU frequency after the device wakes, then operates similar to Conservative. However, it has been noted as being very slow when down-scaling, taking up to a second to switch frequencies.

Review

Used it before. Like the name of the governor, I didn't experience any lag whatsoever. Another governor based on performance, but not battery efficient.

MinMax

MinMax is just a normal governor. No scaling intermediate frequency scaling is used.

Review

Well.. it's too normal that I can't really say anything about it..

Interactivex

InteractiveX governor is based heavily on the Interactive governor, enhanced with tuned timer parameters to optimize the balance of battery vs performance. InteractiveX governor's defining feature, however, is that it locks the CPU frequency to the user's lowest defined speed when the screen is off.

Review

A better understanding from the brief to you users, this is an Interactive governor with a wake profile. More battery friendly than Interactive.

GPU Governors

Ondemand

Much like the CPU governor, Ondemand will ramp up the frequency when a load is detected. A good balance between performance and battery savings.*

MSM-Adreno

The default GPU governor used by qualcomm for their adreno GPUs. It is more performance orientated than ondemand therefore it gives better performance in games but less battery life.*

Performance

As the name suggests, this keeps your GPU running at the max frequency. This is a governor if you want the best possible experience in games but you don't care about your battery life.*

Powersave

Like the CPU governor, this keeps your GPU running at the lowest possible frequency. Best battery life

I/O Schedulers

What is an I/O Scheduler:

*Input/output (I/O) scheduling is a term used to describe the method computer operating systems decide the order that block I/O operations will be submitted to storage volumes. I/O Scheduling is sometimes called 'disk scheduling'.

I/O schedulers can have many purposes depending on the goal of the I/O scheduler, some common goals

To minimise time wasted by hard disk seeks.

To prioritise a certain processes' I/O requests.

To give a share of the disk bandwidth to each running process.

To guarantee that certain requests will be issued before a particular deadline.​

Available*I/O schedulers

CFQ *

Deadline *

VR *

Noop*

Anticipatory

BFQ

FIOPS

SIO (Simple)

Row

ZEN

Sioplus

FIFO*

Tripndroid

Anticipatory:*

Two important things here are indicative of that event:*

- Looking on the flash drive is very slow from boot

- 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 noop.

Disadvantages:*

- Requests from process operations are not always available*

- Reduced write performance on high-performance hard drives*

- Not very common in most kernels

CFQ:*

The CFQ - Completely Fair Queuing - similar to the Dead Line maintains a scalable continuous Process-I/O, the available I / O bandwidth is *fairly and evenly shared to all I / O requests to distribute. It creates a statistics between blocks and processes. With these statistics it can "guess" when the next block is requested by what process, each process queue contains requests of synchronous processes, which in turn is dependent upon the priority of the original process. There the V2 version has some fixes, such as I / O request improvements, hunger fixes , and some small search backward integrated to improve responsiveness.This is the default IO scheduler for Samsung smartphones.*

Benefits:*

- Has a well balanced I / O performance

- Excellent on multiprocessor systems*

- Easiest to tune.

- Best performance of the database after the deadline*

- Is the default IO scheduler for most mobile phones today

- Good for multitasking*

Disadvantages:*

- *Some users report media scanning takes longest to complete using CFQ. This could be because of the property that since the bandwidth is equally distributed to all i/o operations during boot-up, media scanning is not given any special 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, it is very popular and is in many well known kernels.*

Benefits:*

- It is nearly a real-time scheduler.*

- Excels in reducing latency of any given single I/O*

- Best scheduler for database access and queries.*

- Does quite well in benchmarks, most likely the best

- Like noop, a good scheduler for solid state/flash drives

- Good for light and medium multitasking workloads

Disadvantages:*

- If the phone is overloaded, crashing or unexpected closure of processes can occur*

- Bad battery life if doing a lot of multitasking

ROW:

ROW stands for "READ Over WRITE"which is the main requests dispatch policy of this algorithm. The ROW IO scheduler was developed with the mobile devices needs in mind. In mobile devices we favor user experience upon everything else,thus we want to give READ IO requests as much priority as possible. In mobile devices we won't have as much parallel threads as on desktops. Usually it's a single thread or at most 2 simultaneous working threads for read & write. Favoring READ requests over WRITEs decreases the READ latency greatly.

The main idea of the ROW scheduling policy is: If there are READ requests in pipe - dispatch them but don't starve the WRITE requests too much. Bellow you'll find a small comparison of ROW to existing schedulers. The test that was run for these measurements is parallel read and write.

Benefits:

- Faster UI navigation and better overall phone experience

- Faster boot times and app launch times*

- Possibly better battery life

- Sometimes used by default for custom roms and custom kernels

Disadvantages:

- Slower write speeds

- Some intensive applications like games could slow down your phone

SIO (Simple):*

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. There is no conversion or sorting of requests.*

Benefits:*

- It is simple and stable.

- Reliable IO scheduler

- Minimized starvation for inquiries

- Good battery life

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. It is best suited for storage devices that are not subject to mechanical movements, such as our flash drives in our phones use to access the data. The advantage is that flash drives do not require rearrangement of the I / O requests, unlike normal hard drives. the data that come first are written first. It's basically not a real scheduler, as it leaves the scheduling of the hardware.*

Benefits:*

- Serves I/O requests with least number of cpu cycles.

- 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*

- Not very good at multitasking

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. It is a very good scheduler with elements of the deadline scheduler. It is the best for MTD Android devices. Vr can make the most of the benchmark points, but it is also an unstable scheduler. *Sometimes the scores fluctuate below the average, sometimes it fluctuates above the average.*

Benefits:

- Generally excels in random writes.*

Disadvantages:*

- Performance variability can lead to different results (Only performs well sometimes)

- Very often unstable and unreliable

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. BFQ has received many updates to the scheduler and the performance is consistently improving.*

Benefits:*

- Has a very good USB data transfer rate.*

- 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

- Being constantly updated

- Good for multitasking*

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.*

- Slower UI navigation

- Slower boot times

ZEN:

Based on the VR Scheduler. It's an FCFS (First come, first serve) based algorithm. It's not strictly FIFO. It does not do any sorting. It uses deadlines for fairness, and treats synchronous requests with priority over asynchronous ons. Other than that, pretty much the same as no-op.

Benefits:

- Well rounded IO Scheduler

- Very efficient IO Scheduler

- More stable than VR, mainly because it doesn't really behave like VR.*

Disadvantages:

- Not found in all kernels

Sioplus:

Based on the original Sio scheduler with improvements. Functionality for specifying the starvation of async reads against sync reads; starved write requests counter only counts when there actually are write requests in the queue; fixed a bug).*

Benefits:

- Better read and write speeds than previous SIO scheduler

- Good battery life*

Disadvantages:

- The same as SIO scheduler

- Not found in all kernels

FIOPS:*

This new I/O scheduler is designed around the following assumptions about Flash-based storage devices: no I/O seek time, read and write I/O cost is usually different from rotating media, time to make a request depends upon the request size, and high through-put and higher IOPS with low-latency.

Benefits:

- Achieves high read and write speeds in benchmarks

- Good battery life

Disadvantages:

- Not very common in most kernels

FIFO (First in First Out):

A relatively simple io schedulers that does what has been described. It is also known as FCFS (First come first serve) but this really isn't true. It does basic sorting; sorting the processes according to the appropriate order and nothing else. In other words, it is quite similar to noop.*

Benefits:

- Serves I/O requests with least number of cpu cycles.

- 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*

- Not very good at multitasking

Tripndroid

A new I/O scheduler based on noop, deadline and vr and meant to have minimal overhead. Made by TripNRaVeR

Recommended IO schedulers:

For everyday usage:

- SIO (My personal favourite)

- NOOP

- CFQ (Third choice)

- Deadline (Forth choice)

- ROW (My second choice)

- ZEN

For battery life:

- SIO (First choice)

- FIOPS*

- NOOP (Second choice)

- ROW (Third choice)

- FIFO

For gaming:*

- Deadline (First choice)

- CFQ (Second choice)*

- ROW (Third choice)

For performance(Benchmarking):

- VR

- SIO (Third Choice)

- Deadline (Second choice)

- FIOPS (First choice)*

For multitasking:*

- BFQ (Third choice)

- Deadline (Second choice)

- CFQ (First choice)

IO Scheduler Comparison

Overall performance:

Best<------------------------------------------------------------------------->Worst

FIOPS> Noop > ZEN >SIOplus > SIO > ROW > Tripndroid > VR > Deadline > BFQ > CFQ

Multitasking performance:

Less Apps<------------------------------------------------------------>Many Apps

Noop < FIOPS < SIO < *SIOplus < ROW < Tripndroid < ZEN < Deadline < VR < *CFQ < BFQ

Battery life:

Best<-------------------------------------------------------------------------> Worst

Noop > FIOPS > SIOplus > SIO > ROW> *ZEN > Tripndroid > Deadline > VR > CFQ > BFQ​