Thursday, June 5, 2014

Various conditions and I/O Performance

Various conditions and I/O Performance


For previos studies on I/O performances, refer to [1],[2] and [3]

My current set-up
It slightly changed ... 
  • Motorola MotoG
  • memory chipset : emmc: 8GB Sandisk REV=06 PRV=07 TYPE=17
  • CM11-20140603-Nightly 
  • RenderKernel r23
  • 192-1190MHz
  • I/O scheduler : fiops
  • gov : is part of the tested conditions!
  • sdcard read-ahead : is part of the tested conditions!

 Benchmark used : AndroBench v3.4

What is being tested?
  • Sequential Read (MB/s)
  • Sequential Write (MB/s)
  • Random Read (IOPS)
  • Random Write (IOPS)
  • SQlite insert (TPS)
  • SQlite update (TPS)
  • SQlite delete (TPS)
Regarding the following modifications :
  • CPU governor (Interactive, intelliactive, intellidemand and ondemand), with fixed sdcard read ahead : 128kB
  • sdcard read ahead (128, 256,512,1024 and 2048kB), with fixed CPU governor (Interactive)
Results
Changing CPU Governor : 
governor seq read (MB/s) seq write (MB/s) rd read (IOPS) rd write (IOPS) SQlite insert (TPS) SQlite update (TPS) SQlite delete (TPS)
interactive 65,28 15,84 1849,93 393,33 51,58 57,72 58,85
stdev 0,77 0,46 11,03 12,96 1,47 0,93 0,58
intellidemand 54,81 13,45 1117,70 219,32 31,73 34,04 34,22
stdev 2,47 0,66 60,30 11,87 1,02 0,37 0,61
intelliactive 67,56 15,77 1984,63 386,10 53,27 56,90 59,65
stdev 1,36 0,23 64,20 22,67 1,87 1,56 0,36
ondemand 65,47 16,06 1777,45 278,06 46,93 49,73 53,84
stdev 4,43 2,36 63,01 42,24 3,11 3,56 1,20

 The following graph shows a delta% against median (100%), that way a little difference looks big (mostly because of the chosen scale)

Changing sdcard read ahead : 
sd read ahead (kB) seq read (MB/s) seq write (MB/s) rd read (IOPS) rd write (IOPS) SQlite insert (TPS) SQlite update (TPS) SQlite delete (TPS)
128 65,28 15,84 1849,93 393,33 51,58 57,72 58,85
stdev 0,77 0,46 11,03 12,96 1,47 0,93 0,58
256 66,37 15,93 1844,57 397,16 51,53 56,78 59,33
stdev 2,61 2,09 17,24 28,20 1,06 1,01 0,13
512 67,04 17,22 1828,12 385,42 51,52 57,14 57,81
stdev 2,19 3,94 30,43 21,74 1,29 0,80 0,34
1024 65,90 18,50 1999,54 384,88 51,37 55,92 58,42
stdev 5,59 1,04 25,79 3,23 1,54 2,43 0,46
2048 69,01 16,47 1962,58 383,69 51,32 56,91 58,84
stdev 4,82 1,10 20,62 4,66 0,72 1,69 1,22

The following graph shows a delta% against median (100%), that way a little difference looks big (mostly because of the chosen scale)


What does that show?
  • Regarding governors we can say interactive and intelliactive are pretty similar and that intellidemand is far behind. (stdev are not really good, but differences between averages are higher than standard deviations)
  • Regarding cache size (sdcard read ahead), results are totally inconsistent (look at stdev/averages!), a 'No Conclusion' conclusion is safe since differences don't look significant.
  • I remember that in the X10mini ages (2010), any size higher than 128kB created hiccups during music playback ... Worth the risk?
==> What we can say is that I/O performances aren't only linked to IO-schedulers but to many other critical points such as CPU governor, (maybe) sdcard cache size, and other untested conditions.

What are the limits?
same as before ...
  • Lack of accuracy with only 3 test per condition (and high results dispersion)
  • These results are at least device dependent, kernel dependent, ROM dependent AND emmc type dependent (MotoG could be built with at least 4 different memory chips)
  • CPU governors are highly tunable, so one that is bad here could be better in other conditions ...
  • Delta% against median is not the best to compare but was the easiest here (i could not put IOPS and MB/s in the same chart because of scaling)