ashvardanian/less_slow.cpp

Faster `io_uring` RPC

ashvardanian opened this issue · 4 comments

The current minimalistic RPC implementation using io_uring avoids certain more advanced features:

  • IORING_REGISTER_BUFFERS - since 5.1
  • IORING_RECV_MULTISHOT or io_uring_prep_recvmsg_multishot - since 6.0
  • IORING_OP_SEND_ZC or io_uring_prep_sendmsg_zc - since 6.0
  • IORING_SETUP_SQPOLL - with IORING_FEAT_SQPOLL_NONFIXED after 5.11
  • IORING_SETUP_SUBMIT_ALL - since 5.18
  • IORING_SETUP_COOP_TASKRUN - since 5.19
  • IORING_SETUP_SINGLE_ISSUER - since 6.0

It would be great to have one more implementation that uses those newer features while running on a newer Linux kernel.

I've renamed the existing classes to rpc_uring55_server and rpc_uring55_client, targeting Linux kernel 5.5 and newer.
I propose adding new classs called rpc_uring60_server and rpc_uring60_client for kernel 6.0 and newer.

This set of examples by Dylan Yudaken (@DylanZA) can be very handy 🤗