Introduction
The aim of the project is to characterise the performance of the different block I/O schedulers available in Linux 2.6, under various workloads. We're particularly interested in the interaction with RAID. The goal is to both improve performance in the general case, and to produce documentation and guidelines for choosing and tuning a scheduler for a particular workload.
The Schedulers
The I/O schedulers available in Linux 2.6 are:
- noop
- deadline
- anticipatory
- Complete Fair Queuing (CFQ)
There is a description of these in LinuxIOSchedulers
Additionally, we have implemented two new schedulers:
- IOScheduling/VRscheduler: an implementation of the V(R) scheduling algorithm;
- IOScheduling/FIFOscheduler: a pure FCFS scheduler.
Tools
The tools we're using for performance testing include:
Results
IOScheduling/MicroResults --- fio microbenchmarks
IOScheduling/Comparisons --- Selected comparisons of throughput and latency with the different schedulers
IOScheduling/Comparisons --- Selected comparisons of throughput and latency with the different schedulers
Aaron's honours thesis describing the work in detail is now up at http://www.ertos.nicta.com.au/publications/#ug
Misc
IOScheduling/Talks --- Talks about this workIOScheduling/ToDo --- things that need to be done
IOScheduling/TestHardware --- Notes on the disk array we're using for testing
IOScheduling/Ideas --- Possibilities for future work
http://www.gelato.unsw.edu.au/IA64wiki/IOScheduling