[Galaxy Note II General] Firifire:
If you don’t know what`s an I/O scheduler or want to know the working of each scheduler read this http://xdaforums.com/showpost.php?p=23616564&postcount=4 Thanks to droidphile

Thanks to [MENTION=5697564]KNIGHT97[/MENTION] for his tips and experience http://xdaforums.com/showthread.php?t=2784750 he inspired me to do this :D

Introduction

Every Scheduler has its advantage and disadvantage, so its difficult to find what suits you. So I have come up with a guide to help those people decide the right I/O scheduler according to their usage.

This guide is from my observation, the information below may or may not be accurate. If the scheduler doesn’t work as well as mentioned below, then maybe your kernel has a different version of the scheduler.

People most often use benchmarking apps to find a good I/O scheduler, but that’s the wrong way to go. First off all the benchmarks results are similar for each scheduler.

Let me tell you how a scheduler can affect your performance

Some scheduler try handling multiple operations at one time (Uses more CPU and battery) while others do few or only one at a time (Use less CPU and saves battery)

Let’s take an example, copying few big files one at time is faster than copying all at once… So at situation like that I/O scheduler that does one at time is good

But when there is multiple small files, the speed is very slow when copying one at a time but copying many at once is faster… So here we can say I/O scheduler that handle multiple operation is better

When I mention light I/O operation, it means the file size is small or if its writing a big file it doesn’t need high speed(like a long non-HD video recording) and as for heavy I/O operation means it’s reading/writing a big file

If an app requests read/write one at a time or does requests multiple,its performance can be affected by the scheduler accordingly

I/O scheduler

CFQ (Completely Fair Queuing)

CFQ it is said to work well with multi core processor and balances both write a read. It handles multiple operations real well but can be slow if most of the operation is read and little write (maybe cause its reserving place for another write operation /?)

Many people say that the media scanning is really, and I agree to it. (I have like 300 apps on my 64GB sandisk microSD and it is overloaded with many big and small files, So… I can easy tell the difference cause it takes like 1:30 minutes before the externalSD apps icon to load while on other scheduler it takes around 30 sec to 1 min

Ideal if you download files a lot and use apps that mainly read files(like music/ videos) or you use apps that needs to read and write equally.

ROW (Read Over Write)

It is just like CFQ but just as the name implies, it gives priority for reading. It also handles multiple operations real well.

Its ideal when you run apps has more read operations and little write

So if you use more multiple reading operations(like gallery). Row is the best scheduler for you

I wanted to use scheduler that does one at time operation but some apps like tumblr does reading and little cache writing at the same time so I use ROW instead for internal storage

BFQ (Budget Fair Queueing)

BFQ is just like CFQ but you could say it’s better for heavy process or lots of multiple process and uses the CPU even more. Due to its high CPU usage when doing lots multiple I/O operations other non-I/O operations can become laggy.

Ideal for burst shots, HD recording and other multiple heavy read and write

Most computers uses BFQ

Noop

Noop is a rather simpler scheduler compared to those above. There is no priority for read or write, it does thing in a first in first out(FIFO) method. So it basically does things one at a time.

Ideal for those that have light usage of the storage and for people who wants to save battery or wants less CPU usage

Many apps don’t require to write and read at the same time so it’s ideal for those apps

Ideal for doing one at a time like only downloading, playing video, music and taking photo or video

Sometimes can be slower than deadline, SIO or zen

Not ideal for some games

Deadline

Its bit similar to noop but handles processes little differently, it creates a queue(FIFO) of around 5 and gives each queue a turn by giving the process a deadline. It handles multiple light I/O operations real well

Ideal for those that have medium usage of the storage

Might suit better than ROW/CFQ for those that who don’t have heavy and multiple I/O operation

It is said that when the CPU is overloaded, set of processes that may miss deadline is largely unpredictable.

SIO

It’s the mix of the Noop and deadline. It’s known for its simplicity of handling I/O request and handles operations one at a time

Ideal for those that have light-medium usage of the storage

Many apps don’t require to write and read at the same time so it’s ideal for those apps

Ideal for doing one at a time like only downloading, playing video, music and taking photo or video

I use SIO for the external storage cause that’s where I keep my Games, Photos, Videos and Music and I naturally cant play music when playing a game or watch a video while listing to music which is ideal for a scheduler that does one at a time operation

Zen

Zen is said to also be simply yet more close to noop. From my observation, It has notably more speed for I/O read and write (this is the one that has noticeable difference in benchmark only :P ) but uses the CPU a lot if the I/O operation is heavy which can cause more lag than BFQ. It does one at a time operation.

Might be good for games that reads a lot (like graphic data) since its fast. You don’t have to worry about the fact that zen uses a lot of CPU which could make the game lag cause most I/O operation is short and when done it won’t use the CPU until next operation :P (need to test more)

Ideal for burst shots and HD recording also

Many apps have short/light I/O operation so you wont face lag but an increase in speed compared to SIO or Noop (sometimes faster than others also)

Not ideal for multitasking like browsing and downloading at the same time

VR

It’s said to treat each process fairly by giving them a deadline and has performance fluctuation so sometimes it’s the most fastest scheduler or just plain slow.

Not sure if it handles multiple operations well or one at time operations.... I need to research more

Not sure what it’s ideal for hmm…. Maybe for those that dont have fixed usage :p

FAQ

When deciding an I/O for each storage, treat the usage separately.eg I listen to music(external with SIO) and use tumblr (internal with ROW) though SIO does things one at time, there won’t be music shuttering. But if my music was on internal with SIO there will be music shuttering

If you too many different uses and cant stay with one I/O scheduler. Use Perfomance profile by h0rn3t. It can change I/O scheduler and other settings depending on the app http://xdaforums.com/xposed/modules/xposed-performance-profile-t2723739

Since most external SDcard has slow speed, I recommend a scheduler that does operations one at a time

As for the battery usage, it doesn’t make much of difference cause usually most I/O operations aren’t that long unless you are downloading or something. Battery usage depends on the CPU usage caused by the scheduler so….

SIO<Noop<Deadline<VR<ROW<=CFQ<Zen<=BFQ

SIO supposedly has least battery usage while Zen and BFQ has the most

And that’s the end of my guide :cool:

Do comment and share your opinions or preference

If you find any info incorrect or that I could add, do tell :)