![Планировщик ввода-вывода с малой задержкой](https://rvso.com/image/658742/%D0%9F%D0%BB%D0%B0%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%20%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0%20%D1%81%20%D0%BC%D0%B0%D0%BB%D0%BE%D0%B9%20%D0%B7%D0%B0%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%BE%D0%B9.png)
У меня есть несколько виртуальных машин, работающих под управлением облачного образа Ubuntu версии 14.04-1 LTS. Я хотел посмотреть производительность ввода-вывода различных планировщиков ввода-вывода на виртуальной машине, поэтому я перешел /sys/block/<drive>/queue/scheduler
в гостевую ОС, чтобы изменить планировщик ввода-вывода. Обычно, там должно быть cfq
, deadline
, или noop
для выбора. Но то, что я увидел, это none
. Означает ли это, что Canonical удалила планировщик ввода-вывода в облачном образе или планировщик none
здесь — это переименованный noop
планировщик? И что произойдет, если у нас нет планировщика ввода-вывода в системе? Все запросы ввода-вывода были отправлены хосту напрямую в порядке FIFO?
Спасибо, что пролили свет!
решение1
Планировщик ввода-вывода с малой задержкой
(Этот шаг необязателен для твердотельных накопителей, использующих протокол NVMe вместо SATA, которые обходят традиционный планировщик ввода-вывода и
blk-mq
вместо этого используют модуль.)Планировщик ввода-вывода по умолчанию ставит данные в очередь, чтобы минимизировать запросы на жестких дисках, что не нужно для твердотельных накопителей. Таким образом, используйте планировщик
"deadline"
, который просто гарантирует, что массовые транзакции не замедлят мелкие транзакции: Установитеsysfsutils
иecho "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf
(настройте sdX в соответствии с вашим SSD) перезагрузите или
echo deadline > /sys/block/sdX/queue/scheduler
Итак, ответ: none
НЕ является псевдонимом для noop
. none
означает «планировщик не используется».
решение2
Похоже, что на ядрах >= 3.13 больше none
нет псевдонима noop
. Он отображается, когдаblk-mq
Фреймворк ввода-выводаиспользуется; это означает полный обход старых планировщиков, поскольку blk-mq
(на данный момент) вообще нет планировщиков для выбора.
В более ранних ядрах none
это действительно плохо документированный псевдоним для noop
. СмотритездесьБольше подробностей.
решение3
None не является псевдонимом для noop.
None не отображается, поскольку планировщик не используется. SSD-накопители, использующие протокол NVMe вместо SATA, обходят традиционный планировщик ввода-вывода.
решение4
https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers
none (Multiqueue) Многоочередной планировщик ввода-вывода без операций. Не переупорядочивает запросы, минимальные накладные расходы. Идеально подходит для быстрых случайных устройств ввода-вывода, таких как NVME.