Случайно заинтересовался данным вопросом, а для каких дисков какой планировщик выбрать.
У нас есть 3 вида планировщика, это
noop deadline cfq, давайте разберем каждый.
noop — простейший планировщик, предназначен для работы с не дисковыми устройствами (ОЗУ или flash) или со специализированными устройствами у которых есть уже встроенный планировщик I/O.
deadline — цель данного алгоритма минимизация задержек ввода/вывода, и обеспечение поведение близкое к реальному времени, он больше подходит для систем, в которых количество считываемой информации превосходит количество записываемой.
cfq — для каждого процесса поддерживается своя очередь ввода/вывода, а главная цель планировщика, чтобы как можно равномерней распределять доступную полосу пропускания между всеми запросами, идеально подходит для случаев, когда множество программ могут потребовать доступ к диску.
У меня установлен
ssd диск на котором живет вся система, так же есть два террабайтных жестких диска, ну иногда мне приходиться пользоваться различными
flash устройствами, и что бы все это работало пошустрее, я маленько оттюнинговал планировщики.
На самом деле все несложно, на
ssd происходит минимум записи(да да да, на это повлиял старый миф об отказоустойчивости sdd дисков и ограничение на кол-во перезаписей блоков), для
ssd —
deadline, для дисковых
hdd —
cfq, ну и для
флешек —
noop. Теперь о том как нам все это реализовать. Создаем файл со следующим содержимым:
/etc/udev/rules.d/60-schedulers.rules
# установка планировщика deadline для SSD
ACTION=="add|change", KERNEL=="sdc", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
ACTION=="add|change", KERNEL=="sdc", ATTR{queue/rotational}=="0", ATTR{queue/iosched/fifo_batch}="1"
# установка планировщика cfq для HDD
ACTION=="add|change", KERNEL=="sda", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
ACTION=="add|change", KERNEL=="sdb", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
# Установка планировщика для флешек
ACTION=="add|change", KERNEL=="sdd", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="noop"
ACTION=="add|change", KERNEL=="sde", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="noop"
В файле присутствую комментарие, думаю вы сами в состояние заменить на нужные значения.
P.S. Надо изменять значения KERNEL на имя ваших дисков.
Всем сверх космических скоростей чтения/записи.
> ATTR{queue/rotational}==«1»
ОК.