To choose IO schedulers at boot time, use the argument ‘elevator=deadline’.
‘noop’, ‘as’ and ‘cfq’ (the default) are also available. IO schedulers are
assigned globally at boot time only presently.
Each io queue has a set of io scheduler tunables associated with it. These
tunables control how the io scheduler works. You can find these entries
in:
/sys/block/
assuming that you have sysfs mounted on /sys. If you don’t have sysfs mounted,
you can do so by typing:
mount none /sys -t sysfs
As of the Linux 2.6.10 kernel, it is now possible to change the
IO scheduler for a given block device on the fly (thus making it possible,
for instance, to set the CFQ scheduler for the system default, but
set a specific device to use the anticipatory or noop schedulers - which
can improve that device’s throughput).
To set a specific scheduler, simply do this:
echo SCHEDNAME > /sys/block/DEV/queue/scheduler
where SCHEDNAME is the name of a defined IO scheduler, and DEV is the
device name (hda, hdb, sga, or whatever you happen to have).
The list of defined schedulers can be found by simply doing
a “cat /sys/block/DEV/queue/scheduler” - the list of valid names
will be displayed, with the currently selected scheduler in brackets:
cat /sys/block/hda/queue/scheduler
noop anticipatory deadline [cfq]
echo anticipatory > /sys/block/hda/queue/scheduler
cat /sys/block/hda/queue/scheduler
noop [anticipatory] deadline cfq