Применение асинхронной буферизированной записи на базе io_uring до 80 раз снизило задержки в XFS

Опубликована серия патчей для включения в ядро Linux 5.20, добавляющая поддержку асинхронной буферизированной записи в файловую систему XFS при помощи механизма io_uring. Из предварительных тестов производительности при помощи инструментария fio (1 поток, размер блока 4кб, 600 секунд, последовательная запись) показывают рост числа операция ввода/вывода в секунду (IOPS) от 77k до 209k, передачи данных от 314MB/s до 854MB/s, падения задержек от 9600ns до 120ns (80 раз).

sequential writes: without patch with patch libaio psync iops: 77k 209k 195K 233K bw: 314MB/s 854MB/s 790MB/s 953MB/s clat: 9600ns 120ns 540ns 3000ns

Для интересующихся состоянием io_uring на середину 2022 года, рекомендуется ознакомиться со слайдами и видеозаписью доклада с Kernel Recipes 2022. Обзорно упоминаются изменения уже вошедшие в ядро и планируемые, например можно отметить поддержку:

  • множественного (multi-shot) accept().
  • множественного (multi-shot) recv() – по тестам прирост 6-8% – от 1150000 до 1200000 RPS.
  • обновление и исправления в библиотеке liburing, добавление документации и тестов.

В контексте переносимости io_uring на слайдах упоминается значительная схожесть “I/O Rings” используемой в подсистеме Direct Storage в Windows 11, возможность реализации кроссплатформенной работы, но из других платформ на слайде автора упомянута только FreeBSD со знаком вопроса.



Release. Ссылка here.