I've tested all of the schedulers at one time or another, and deadline appears to be best in my opinion. Have you read the kernel comments on the schedulers? They provide very good tips on how to choose:
x The anticipatory I/O scheduler is the default disk scheduler. It is x
x generally a good choice for most environments, but is quite large and x
x complex when compared to the deadline I/O scheduler, it can also be x
x slower in some cases especially some database loads. x
x The deadline I/O scheduler is simple and compact, and is often as x
x good as the anticipatory I/O scheduler, and in some database x
x workloads, better. In the case of a single process performing I/O to x
x a disk at any one time, its behaviour is almost identical to the x
x anticipatory I/O scheduler and so is a good choice. x
x The CFQ I/O scheduler tries to distribute bandwidth equally x
x among all processes in the system. It should provide a fair x
x working environment, suitable for desktop systems. x
That's a rather interesting comment, Steven. I run deadline on a database server which pushes 300 queries per second all day long, and I've never had corruption issues.
Could it possibly be due to an even higher QPS?
Not real sure, but once upon a time I had it on several high traffic vbulletin boards 500users+, constantly had tables going corrupt after I moved to deadline. That was the only variable that changed over several servers, so im pretty sure it was deadline. Im pretty much hardfaced on cfq now, havent seen much of a difference at all.