Block scheduler performance
Some parameters might require adjustment to achieve optimal block scheduler performance.
Block scheduler performance can be improved under SLES 11 and SLES 11 SP1, as well as under RHEL5 and RHEL6.
By default, the 2.6 kernels provide a request fairness queuing value of rfq, and under some circumstances this value results in the device queue depth being reduced to 1. By changing this value from rfq to noop, the scheduler fairness algorithm is not used, the queue depth is not reduced and higher performance is maintained.
This value can be changed at boot time or, with certain recent 2.6 kernels, at runtime:
- At boot time, the kernel parameter elevator=noop is typically appended to a kernel menu line in the appropriate boot path (such as /boot/grub/menu.lst, /boot/grub/grub.conf, or /etc/lilo.conf.x).
- At runtime, change the scheduler by echoing the name of the scheduler
into /sys/block/$devicename/queue/scheduler,
where the device name is the basename of the block device (such as sda),
for /dev/sda. Some versions
of Linux also apply the scheduler to multipath devices, and these
also need to be amended, such as the following examples:
- echo noop > /sys/block/sda/queue/scheduler
- echo noop > /sys/block/dm-0/queue/scheduler
If new devices are discovered, multipath is flushed and reloaded, or the Fibre Channel driver module is reloaded. Using the echo option requires you to reapply the changes unless you have also changed the default kernel option at boot time.