Собственно, сабж: https://www.phoronix.com/news/DMA-BUF-IO-uring-Linux-7.4 .
Сегодня в рамках продолжающегося окна слияния для ядра Linux 7.4 был добавлен инфраструктурный код, обеспечивающий поддержку DMA-BUF в механизме ввода-вывода ядра с использованием замечательного фреймворка IO_uring.
...
Павел Бегунков, руководивший процессом внесения правок на протяжении одиннадцати этапов их рассмотрения, пояснил суть новой функциональности: «Это опциональная возможность для файлов, для использования которой необходимо реализовать новую файловую операцию. В данной серии патчей поддерживаются только блочные устройства NVMe. Пользовательский API построен на базе механизма «зарегистрированных буферов» (registered buffers) в `io_uring`: объект `dmabuf` регистрируется особым образом, после чего его можно использовать так же, как и любой другой «зарегистрированный буфер», посредством запросов `IORING_OP_READ_FIXED` или `IORING_OP_WRITE_FIXED`. Буфер создается через новую файловую операцию, а полученное отображение (map) передается через стек ввода-вывода с помощью нового типа итератора. Также предусмотрена дополнительная инфраструктура, обеспечивающая связность компонентов, подсчет запросов, управление жизненным циклом и механизм аннулирования (инвалидации) данных».
Теперь можно, например, поместить модель ИИ сразу в GPU, не тратя ресурсы на помещение её в RAM и последующее копирование её оттуда в GPU.










