Android IO Schedulers
Anticipatory
- Disk seeks are really slow.
- Write operations can happen whenever, but there is always some process waiting for read operation.
- Read requests from processes are never starved.
- As good as noop for read-performance on flash drives.
- ‘Guess works’ might not be always reliable.
- Reduced write-performance on high performance disks.
BFQ
- Believed to be very good for usb data transfer rate.
- Believed to be the best scheduler for HD video recording and video streaming. (because of less jitter as compared to CFQ and others)
- Considered an accurate i/o scheduler.
- Achieves about 30% more throughput than CFQ on most workloads.
- Not the best scheduler for benchmarking.
- Higher budget assigned to a process can affect interactivity and increased latency.
CFQ
- Considered to deliver a balanced i/o performance.
- Easiest to tune.
- Excels on multiprocessor systems.
- Best database system performance after deadline.
- 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) exhibited can sometimes be high, because of the number of tasks competing for the disk.
Deadline
- Nearly a real time scheduler.
- Excels in reducing latency of any given single I/O.
- Best scheduler for database access and queries.
- Bandwidth requirement of a process – what percentage of CPU it needs, is easily calculated.
- Like noop, a good scheduler for solid state/flash drives.
- When system is overloaded, set of processes that may miss deadline is largely unpredictable.
Noop
- Serves I/O requests with least number of cpu cycles. (Battery friendly?)
- Best for flash drives since there is no seeking penalty.
- Good throughput on db systems.
- Reduction in number of cpu cycles used is proportional to drop in performance.
SIO
- Simple, so reliable.
- Minimized starvation of requests.
- Slow random-read speeds on flash drives, compared to other schedulers.
- Sequential-read speeds on flash drives also not so good.
V(R)
- May be best for benchmarking because at the peak of it’s ‘form’ VR performs best.
- Performance fluctuation results in below-average performance at times.
- Least reliable/most unstable.
References