CFQ to become the default I/O scheduler in 2.6.18

Judging by this commit, CFQ (Complete Fair Queuing) I/O scheduler will become the default one in the upcoming 2.6.18 kernel. For a long time, anticipatory scheduler has been the default, although even back in late 2004 there was some thinking about replacing it with CFQ. And it seems the time has finally come. CFQ scheduler has been gaining adoption since then, to the point that it's the default I/O scheduler for RHEL 4, Suse, and other distros.

One of the coolest things about CFQ is that it features I/O priorities (since 2.6.13). That means you can set the I/O priority of a process so you can avoid that a process that does too much I/O (daily updatedb) starves the rest of the system, or give extra priority to a process that shouldn't be starved by other processes, by using the ionice tool included in schedutils (since version 1.5.0).

If you find any problems with the new default scheduler, you can still continue using the AS scheduler, by switching to it at runtime (echo anticipatory > /sys/block/<disk>/queue/scheduler) or by using the elevator=as boot option.

Learn more about Linux I/O schedulers from this great whitepapers:



What about the deadline scheluler? Isn't that a good one?

The deadline scheduler was the default one before anticipatory got invented. So it should be good enough, in some specific workloads probably even better. It's very hard to see differences among production schedulers, unless you have some "real" I/O load on your machine.

Well i heard that CFQ is the best when using Ext3 and deadline when using XFS... but this is only for single CPU systems