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 на имя ваших дисков.

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

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

  1. nomad 26 октября 2019, 19:59 # 0
    > для флешек
    > ATTR{queue/rotational}==«1»
    ОК.
    1. cloudsv 26 октября 2019, 20:11 # 0
      sdd флешка
      cat /sys/block/sdd/queue/rotational 
      1
      

    Авторизация

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

    MTProto прokси для Telegram

    Прямой эфир

    Diego mont 25 мая 2023, 07:04
    Полезные боты в Telegram 2
    cloudsv 24 апреля 2023, 17:56
    Обновление Scala Rider G4 52
    cloudsv 12 ноября 2022, 19:16
    Установка и настройка minidlna 3
    cloudsv 03 ноября 2022, 03:42
    Настройка прокси mtproto для Telegram 52
    cloudsv 03 января 2022, 10:50
    Let's Encrypt это легко и просто 4
    cloudsv 10 сентября 2020, 13:17
    MySQL Workbench падает при подключении 2
    cloudsv 05 августа 2020, 11:57
    Мне вчера стукнуло 34 4
    cloudsv 07 августа 2023, 22:56
    Linux Asus ROG x13 flow 2022 GV301RE и Linux 0
    cloudsv 15 апреля 2023, 16:23
    Linux Уведомление о смены workspace в X11 Linux 0
    cloudsv 17 октября 2020, 09:55
    Linux Отключить DHCP IPv6 в systemd 0
    cloudsv 30 июля 2020, 21:54
    О жизни Мне вчера стукнуло 34 4
    cloudsv 15 апреля 2020, 15:45
    Linux Основные hotkeys редактора Vim 0
    cloudsv 01 октября 2019, 08:00
    Linux Локальный редирект порта в Linux 0
    cloudsv 25 августа 2019, 16:14
    О жизни Социальная сеть от Яндекса Aura 0
    cloudsv 30 июля 2019, 21:34
    О жизни 33 year old 0
    cloudsv 25 июня 2019, 18:29
    Telegram Полезные боты в Telegram 2