There are schedulers optimized for servers and desktops. 'noop' and 'deadline' are best for server environments, whereas 'anticipatory' and 'cfq' are for desktops
If set, it can be seen in /sys/block/
Otherwise, it uses whatever default for the vendor kernel (e.g., SUSE enterprise use CFQ for their kernels by default)
You need to set it for each device, e.g., sda, sdb, hda etc
sysctl -w sys.block.sda.queue.scheduler=deadline
OR
echo "deadline" > /sys/block/sda/queue/scheduler
cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
The one in the square brackets is what is set
It can be set while running in later kernels too by changing that parameter
Otherwise, it can be set at boot time. Debian has a utility called 'sysfsutils' which allows you to set it in /etc/sysfs.conf
sysfsutils - sysfs query tool and boot-time setup
# cat /etc/sysfs.conf | grep cfq
block/sda/queue/scheduler = cfq
block/sdc/queue/scheduler = cfq
# /etc/init.d/sysfsutils restart
Or can be done via parameter at boot:
GRUB:
root=/dev/sda1 noapic elevator=deadline
LILO:
append="elevator=deadline"
From Lustre documentation:
deadline – This is the 'old' scheduler, which works well for servers.
anticipatory I/O scheduler (AS) – It is designed for 'batching' I/O requests. It does not work well for servers and high IO loads.
cfq – It adds multiple scheduling classes. cfq also does not work well for servers and high I/O loads.
noop – This is the 'old' elevator. It works well for servers.
This seems quite different to what RedHat recommend http://www.redhat.com/magazine/008jun05/features/schedulers/
No comments:
Post a Comment