Для ядра Linux подготовлены оптимизации, повышающие производительность планировщиков ввода/вывода

Йенс Эксбо (Jens Axboe), создатель io_uring и планировщиков ввода/вывода CFQ, Deadline и Noop, продолжил свои эксперименты с оптимизацией ввода/вывода в ядре Linux. На этот раз под его внимание попали планировщики ввода/вывода BFQ и mq-deadline, оказавшиеся узким местом как минимум в случае скоростных накопителей NVMe.

Как показало изучение ситуации, одной из ключевых причин неоптимальной производительности подсистем планировщиков ввода/вывода стали проблемы с конкурирующими блокировками («lock contention«, попытка получить блокировку, удерживаемую другим потоком). Благодаря мерам, нацеленным на снижение соперничества при обработке блокировок, таким как сериализация диспетчеризации и вставки запросов, скорость работы плинировщиков выросла в ряде ситуаций в разы (в IOPS).

При тестировании планировщика BFQ утилитой fio производительность выросла с 567К до 1551К операций ввода/вывода в секунду, а конкуренция блокировок снизилась с 96% до 30%. В случае с mq-deadline производительность после применения предложенных патчей при использовании NVMe-накопителя увеличилась с 1070К до 2560K операций ввода/вывода в секунду (IOPS), а конкуренция блокировок снизилась с 94% до 23%.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60474