I/O Scheduler - A quick test

gsw5700

Senior Member
Jan 31, 2011
2,890
663
183
After trying to decide which I/O scheduler to use, I decided to try running the Androbench storage performance benchmark tool for the I/O schedulers,
cfq, deadline, noop,vr and sio to find out.
All tests run on deodexed JVQ on Galaxian [email protected]
The file system used was /data (ext4)

I used standard buffer sizes (256Kb for sequential I/O) and (4kb for random I/O) To speed the tests up, I used a read file size of 16Mb and a write file size of 1Mb
I did test using the recommended sizes of 32MB and 2MB) but the rates were the same so I kept the smaller sizes to speed up the tests

I know its not very scientific but provides a rough estimate of the relative performance.

MBRS =MB/s sequential reads
MBWS =MB/s sequential writes
RRIOPS =random reads IO's/sec
RWIOPS=random writes IO's/sec

Test #1
MBRS MBWS RRIOPS RW IOPS
cfq 19.40 4.8 1014 35
deadline 19.39 6.1 1119 42
noop 19.47 9.0 1098 43
vr 17.76 7.7 1105 45
sio 18.30 6.9 1152 49


Test #2
MBRS MBWS RRIOPS RWIOPS
cfq 19.18 3.3 1057 33
deadline 26.27 5.5 1151 43
noop 19.08 8.6 1059 41
vr 19.55 6.4 1120 50
sio 19.16 6.3 1122 45


Test #3
MBRS MBWS RRIOPS RWIOPS
cfq 19.25 3.8 1120 34
deadline 18.97 7.8 1146 43
noop 19.59 9.3 1161 45
vr 19.14 6.6 1227 53
sio 19.46 7.5 1172 50

my conclusion - use NOOP or SIO(if stable)

As you can see, sequential reads (MB/s) and sequential IOPS are very high so I don't think we need to worry about these too much, as you know (from Quadrant) it's writes that are VERY slow

Unsurprisingly, we can see that the slowest scheduler is the default CFQ.
The noop scheduler produced the fastest sequential write rate on all runs.
the VR and SIO schedulers produce the greatest number of IOPS for random writes.

Think I will use the noop scheduler as it uses little CPU and is fairly well established and its not far off the random write IOPS rate.

Is someone can be arsed, I think we should test with all background processes off, using a 1Ghz speed, and run say 10 sets of tests and order the results using a spreadsheet.

Would be good to see these results run against a RFS file system too!!!
Would also be good to test I/O against say a /cache file system with journalling switched off to unserstand the actual improvement.

I am surprised at the read speed, the IO rate is equivalent to 5 or 6 15K SA/FC physical disks - Whahoo!!!!!
 

Al3cks

Senior Member
Apr 20, 2008
137
58
58
Ploiești
Hi,
Last evening I updated my kernel to Galaxian 2.0 and after reading your test results I set my I/O scheduler to noop and this morning... I found my phone hot, checked the battery status and had the nasty surprise of finding that Android OS has taken 41% of my battery and the phone didn't sleep almost all night. Did you have this problem? I'm trying to figure out whether the Android OS bug returned because of the kernel update or the I/O scheduler change.

Thanks.
 

gsw5700

Senior Member
Jan 31, 2011
2,890
663
183
Hmm, used system panel to check android and overhead for me was very low, I use juice defender and lose about 2 or 3% battery overnight, phone is cool, try wiping cache, dalvik and fix permissions and reboot once or twice, if the same change to deadline and observe difference

Sent using geek power
 

ZioGTS

Senior Member
Jun 11, 2011
837
427
93
My benchmark results!

Hey, I read countless threads on I/O schedulers, but most of them were based on opinions or feelings... except this one! I want to contribute, so I decided to run my set of benchmarks too.
I used the latest AndroBench 2.0 from the market, default/recommended settings. Each I/O scheduler was tested three times, and the numbers below are the averages of the results.
  • Samsung Galaxy S GT-I9000
  • Firmware: stock 2.3.3 w/root (RSJV3, latest official firmware in Italy)
  • Kernel: Galaxian 2.4
  • File system: RFS
  • No overclock
  • Cpu governor set to "performance" to make sure frequency doesn't fluctuate during test runs.

I created a couple of simple comparison indexes:
Read Index = SeqRead * RndReadMB * RndReadIOPS
Write Index = SeqWrite * RndWriteMB * RndWriteIOPS * 100

Here are the averages. You can download the spreadsheet with all the results, it's attached to my post.

--------------noop-----vr-------sio------cfq------deadline
Read Index....57750....57305....54328....58849....60013
Write Index...31339....24051....27602....23233....18628




My conclusion: I agree with gsw5700, NOOP is definetely the most interesting I/O scheduler for our SGS even on RFS file system. Satisfactory read speed and best-of-the-class write speed!
 
Last edited:
  • Like
Reactions: Wilko2010

.:Crack:.

Senior Member
Oct 13, 2010
1,503
381
0
Here are my results (average of 3 runs)

seq.read seq.write r-read r-write
VR: 12.5 - 4.22 - 5.82 - 0.21
SIO: 12.61 - 3.86 - 6,07 - 0.207
BFQ: 12.8 - 3.93 - 6,01 - 0,18
Noop:12.6 - 4,05 - 6,03 - 0,208

(seq= sequential; r-= random; all values in MB/s)
 
Last edited:

xpcomputers

Senior Member
Nov 11, 2006
135
15
0
I've heard BFS is supposedly very good, but can't find any data. Could someone run a test of it against Noop etc. so we can all see...

Thanks

Mike



Garbled meaning induced by swype when posting from XDA app on SGS I9000. ;)
 

.:Crack:.

Senior Member
Oct 13, 2010
1,503
381
0
Here are my results (average of 3 runs)

seq.read seq.write r-read r-write
VR: 12.5 - 4.22 - 5.82 - 0.21
SIO: 12.61 - 3.86 - 6,07 - 0.207
BFQ: 12.8 - 3.93 - 6,01 - 0,18
Noop:12.6 - 4,05 - 6,03 - 0,208

(seq= sequential; r-= random; all values in MB/s)
I did another test with BFQ and noop (5 runs each) and noop won.
(BTW i was a V(R) fanboy before :D)
 
  • Like
Reactions: zacharias.maladroit

xpcomputers

Senior Member
Nov 11, 2006
135
15
0
BFS is a CPU scheduler which has nothing to do with Noop,sio,vr,cfq which are i/o schedulers ;)

A BFQ test is a few posts up....
Whoops! Sometimes a little bit of knowledge makes me dangerous!... But this time I got away with just looking silly!!!

Thanks for correcting me... making mistakes its often the best way to learn!

Mike



Garbled meaning induced by swype when posting from XDA app on SGS I9000. ;)
 

Orochi77

Senior Member
Oct 18, 2010
193
17
0
Interesting test, however I am troubled with my results. I tried running this Androbench software and it seems that I have a lot of fluctuations.
For example during one test I get 4.92mb/s write speed @ noop and then during second test I get 1.52mb/s write speed @ noop test and last one was 2.02mb/s. I mean write speed is write speed you can have minor fluctuations say 4.92mb/s on the first run and 4.90 on the second run. This is of course while the device was not used.
If I run a benchmark software on my pc, I will get almost all the time identical results.
So either there is something wrong with teh software or something else is at play.

Also this guy from over here: http://www.team-continuum.net/home/index.php?topic=290.0 claims that operating on different CPU governors also has impact on benchmark results.
 

pikachu01

Senior Member
Feb 2, 2011
7,314
4,482
0
Penang
Theoretically, SIO is the best.

Benchmark can't represent real life situations as I/O transactions are mostly spurious rather than 1 big chunk of data to and fro (on which this is what benchmarks are doing).

More info at my sig (Android Optimization Tips). CTRL-F for scheduler.
 

bobdoblo

Senior Member
Apr 26, 2012
6,964
19,662
0
What does the phone do most of, i guess it reads much more than it writes so wouldn't it be better to use a fast reading with satisfactory write speeds scheduler?
 
Last edited:

herc2k

Senior Member
Aug 1, 2011
299
78
0
What does the phone do most of, i guess it reads much more than it writes so wouldn't it be better to use a fast reading with satisfactory write speeds scheduler?
+1

and what about the row sceduler
row supposed to be the best fro read, its designed for read or im mistaken?
 
Last edited: