Linux I/O Scheduler, для кого какой?

Материал из support.qbpro.ru

Случайно заинтересовался данным вопросом, а для каких дисков какой планировщик выбрать. У нас есть 3 вида планировщика, это noop deadline cfq, давайте разберем каждый.

  • noop — простейший планировщик, предназначен для работы с не дисковыми устройствами (ОЗУ или flash) или со специализированными устройствами у которых есть уже встроенный планировщик I/O.
  • deadline — цель данного алгоритма минимизация задержек ввода/вывода, и обеспечение поведение близкое к реальному времени, он больше подходит для систем, в которых количество считываемой информации превосходит количество записываемой.
  • cfq — для каждого процесса поддерживается своя очередь ввода/вывода, а главная цель планировщика, чтобы как можно равномерней распределять доступную полосу пропускания между всеми запросами, идеально подходит для случаев, когда множество программ могут потребовать доступ к диску.


У меня установлен ssd диск на котором живет вся система, так же есть два террабайтных жестких диска, ну иногда мне приходиться пользоваться различными flash устройствами, и что бы все это работало пошустрее, я маленько оттюнинговал планировщики. На самом деле все несложно, на ssd происходит минимум записи(да да да, на это повлиял старый миф об отказоустойчивости sdd дисков и ограничение на кол-во перезаписей блоков), для ssd — deadline, для дисковых hdd — cfq, ну и для флешек — noop. Теперь о том как нам все это реализовать. Создаем файл со следующим содержимым:

touch /etc/udev/rules.d/60-schedulers.rules
#
editor /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 на имя ваших дисков.
  • Взято тут