NVIDIA/stdexec

Question about io_uring scheduler

sithhell opened this issue · 2 comments

Hi all,

I have a small question regarding the io_uring scheduler implementation. From skimming the implementation, I found it interesting that you use the kernel header directly instead of the much more high level one provided by liburing.
What is the rationale here? I found that a lot of the code is just replicating what liburing already does (setting up the memory mapped regions etc.).
The reason I am asking specifically is because I am experimenting with it and want to make use of registered buffers and file descriptors and I am shying away from reimplementing the required wrappers.

maikel commented

Hi Thomas,

I asked Eric in the beginning on what he prefers and we went with a header only solution for an easier build configuration. A production ready library should probably use liburing for all the details and incompatibilities that might exists. The work items land in a simple FIFO queue and only one thread is allowed to drive the execution context. At the moment it is really just a proof of concept implementation.

What I would like to look forward to, is to investigate how an API that uses io urings buffer pool looks like. Or its multshot jobs. I've made some progress in my I/O[1] repo where I try out a concepts based approach to I/O schedulers.

[1] https://github.com/maikel/senders-io

Hi Maikel,

Thanks for the clarifications! Makes total sense.