Гайд 1С: Настройка дискового планировщика (none/mq-deadline) в Linux
- Аномальные задержки дискового отклика на современных NVMe накопителях под нагрузкой 1С.
- Неэффективное использование очередей многопоточного контроллера блочных устройств.
- Высокие значения
awaitв утилитеiostatпри умеренном объеме передаваемых данных.
1. Принципы выбора планировщика ввода-вывода
- Для NVMe накопителей: Планировщик
none(аппаратный контроллер NVMe самостоятельно обрабатывает до 64 000 очередей, оверхед ядра Linux на сортировку не требуется). - Для SATA/SAS SSD: Планировщик
mq-deadlineилиnone. - Для виртуальных дисков (KVM / VMware / Hyper-V): Планировщик
none(управление очередями переносится на уровень гипервизора/СХД). - Для традиционных HDD: Планировщик
bfqилиmq-deadline.
2. Проверка и изменение текущего планировщика
# Проверка текущего планировщика для диска sda и nvme0n1
cat /sys/block/sda/queue/scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Временное переключение 'на лету'
echo none > /sys/block/nvme0n1/queue/scheduler
echo mq-deadline > /sys/block/sda/queue/scheduler3. Постоянная фиксация через правила Udev
Создайте файл правил /etc/udev/rules.d/60-io-schedulers.rules:
# NVMe диски -> none
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
# SATA/SAS SSD диски -> mq-deadline
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# Механические HDD диски -> bfq
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"Примените правила udev:
udevadm control --reload-rules && udevadm trigger Частые вопросы (FAQ)
Почему планировщик CFQ устарел и не должен использоваться?
CFQ (Completely Fair Queuing) был разработан для механических HDD с одной физической головкой. На современных SSD и NVMe алгоритмы CFQ создают искусственные задержки и блокируют параллельные очереди.
Что означает планировщик 'none'?
Режим 'none' (в архитектуре blk-mq) означает полное отсутствие промежуточной очереди и сортировки запросов в ядре — команды ввода-вывода направляются напрямую в аппаратные очереди контроллера накопителя.
Как проверить, считает ли Linux диск твердотельным (SSD)?
Выполните: cat /sys/block/sdX/queue/rotational. Значение 0 означает SSD/NVMe, значение 1 — вращающийся шпиндель HDD.
Влияет ли планировщик на файловые операции сервера приложений 1С?
Да, правильный выбор планировщика none/mq-deadline ускоряет работу с временными файлами, сеансовыми данными и каталогами технологического журнала 1С.