Планировщик ввода/вывода (I/O scheduler)
Чтобы посмотреть все доступные планировщики в системе и узнать, какой из них активен выполняем:
~ # cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
Здесь sda — имя блочного устройства, в данном случе sda. В квадратных скобках указан текущий планировщик.
На гостевых виртуальных машинах вывод команды может быть none. Там роль планировщика выполняет ядро гипервизора и все операции ввода/вывода идут напрямую гипервизору, минуя планировщик гостевой ОС. В этом случае зарегистрированные в системе планировщики можно посмотреть в dmesg:
~ # dmesg | grep -i sched
[ 0.213915] io scheduler noop registered
[ 0.213929] io scheduler bfq registered (default)
[ 0.213930] BFQ I/O-scheduler version: v7r6
[ 0.658499] BFS CPU scheduler v0.456 by Con Kolivas.
(default) — планировщик по умолчанию.
Если ядро было собрано с параметром …, то планировщик по умолчанию можно посмотреть в конфигурации ядра. Для извлечения информации обычно используется утилита zcat, поскольку данные сжаты по алгоритму gzip:
~ # zcat /proc/config.gz | grep -i bfq
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
CONFIG_DEFAULT_BFQ=y
CONFIG_DEFAULT_IOSCHED="bfq"
В данном случае выводятся параметры ядра для планировщика bfq.
Меняем планировщик ввода/вывода «на лету»:
~ # echo deadline > /sys/block/sda/queue/scheduler
где sda — имя блочного устройства, deadline — планировщик.
Чтобы при загрузке использовался выбранный нами планировщик, необходимо перекомпилировать ядро с требуемыми параметрами или указать его в конфигурации GRUB:
~ # nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop"
где noop — выбранный нами планировщик.
После внесения изменений нужно обновить конфигурацию grub (для Gentoo):
~ # grub-mkconfig -o /boot/grub/grub.cfg