On Mon, Mar 3, 2025 at 7:51 AM Pavel Begunkov <asml.silence@xxxxxxxxx> wrote: > > Add registered buffer support for vectored io_uring operations. That > allows to pass an iovec, all entries of which must belong to and > point into the same registered buffer specified by sqe->buf_index. > > The series covers zerocopy sendmsg and reads / writes. Reads and > writes are implemented as new opcodes, while zerocopy sendmsg > reuses IORING_RECVSEND_FIXED_BUF for the api. > > Results are aligned to what one would expect from registered buffers: > > t/io_uring + nullblk, single segment 16K: > 34 -> 46 GiB/s > examples/send-zerocopy.c default send size (64KB): > 82558 -> 123855 MB/s Thanks for implementing this, it's great to be able to combine these 2 optimizations! Though I suspect many applications will want to perform vectorized I/O using iovecs that come from different registered buffers (e.g. separate header and data allocations). Perhaps a future improvement could allow a list of buffer indices to be specified. Thanks, Caleb