I've already written about changing the I/O scheduler for hard disk under Linux and avoiding sudden outburst of disk I/O using ionice utility. I/O schedulers can have many purposes such as:
Minimize time wasted by hard disk seeks.
Prioritize a certain processes' I/O requests.
Give a share of the disk bandwidth to each running process etc
Google has sponsored Gelato@UNSW to take a close look at the disk schedulers in Linux, particularly when combined with RAID. They have now published their findings:
We benchmarked the four standard Linux disk schedulers using several different tools (see our wiki for full details) and lots of different workloads, on single SCSI and SATA disks, and on hardware and software RAID arrays from two to eight spindles (hardware raid) and up to twenty spindles (software raid), trying RAID levels 0 through 6.
We had to fix some of the benchmarking tools (the fixes are now upstream), and we developed a new one: a Markov Chain based replay tool, which allows a workload to be characterised and then a similar workload generated.