Мейнтейнер блочной подсистемы в ядре Linux, а также создатель io_uring и планировщиков ввода/вывода CFQ, Deadline и Noop Йенс Аксбо (Jens Axboe) продолжил свои эксперименты с оптимизацией ввода/вывода в ядре Linux. Он занялся оптимизацией работы планировщиков ввода/вывода BFQ и mq-deadline, являющиеся узким местом как минимум в случае скоростных накопителей NVMe.
Как показало изучение ситуации, одной из ключевых причин неоптимальной производительности подсистем планировщиков ввода/вывода стали проблемы с конкурирующими блокировками (lock contention, попытка получить блокировку, удерживаемую другим потоком). Благодаря мерам, нацеленным на снижение соперничества при обработке блокировок, таким как сериализация диспетчеризации и вставки запросов, скорость работы планировщиков выросла в ряде ситуаций в разы (при пересчёте в IOPS в рамках тестов).
При тестировании планировщика BFQ утилитой fio производительность выросла с 567К до 1551К операций ввода/вывода в секунду, а конкуренция блокировок снизилась с 96% до 30%. В случае с mq-deadline производительность после применения предложенных Аксбо патчей при использовании NVMe-накопителя увеличилась с 1070К до 2560K операций ввода/вывода в секунду (IOPS), а конкуренция блокировок снизилась с 94% до 23%.
Ранее Аксбо сообщил, что смог увеличить число операций ввода/вывода в секунду (IOPS) на 6% (или даже больше для полновесных конфигураций ядер Linux), потратив всего 5 минут на внесение правок в код проекта.