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

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


У меня установлен ssd диск на котором живет вся система, так же есть два террабайтных жестких диска, ну иногда мне приходиться пользоваться различными flash устройствами, и что бы все это работало пошустрее, я маленько оттюнинговал планировщики.
На самом деле все несложно, на ssd происходит минимум записи(да да да, на это повлиял старый миф об отказоустойчивости sdd дисков и ограничение на кол-во перезаписей блоков), для ssddeadline, для дисковых hddcfq, ну и для флешек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 на имя ваших дисков.

Всем сверх космических скоростей чтения/записи.

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    Прямой эфир

    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 0
    cloudsv 21 октября 2018, 23:16
    Arch Linux Памятка по основным утилитам Linux 0
    cloudsv 01 июня 2018, 01:39
    Telegram Настройка прокси mtproto для Telegram 28
    cloudsv 22 января 2018, 21:59
    Web Локальное зеркало обновлений Dr.web 0
    cloudsv 03 октября 2017, 10:55
    Web Пароль от резервной копии Bitrix 1
    cloudsv 09 июля 2017, 23:02
    Arch Linux Let's Encrypt это легко и просто 0