On 18/07/2024 22:34, Virgilio Fornazin via Boost wrote:
a good point is to support sendmmsg / recvmmsg on linux/bsd (macos similar syscall SYS_sendmsg_x / SYS_recvmsg_x) to get good UDP throughput support.
I didn't find io_uring support for sendmmsg/recvmmsg at that time, maybe a time you could get coding / pushing this too.
I believe the mm-variants of send and receive take a very different code path to what io_uring uses, so it will never support those. It's a bit like the other zero copy i/o path in Linux, it uses a weird code path to work and io_uring won't support it, ever. So they're forging ahead with their own zero copy approach which I believe requires NIC driver support, otherwise you get silent memory copying. I haven't personally tested it, but the multishot receive feature of io_uring should get quite close to recvmmsg performance. In any case, the once class leading UDP performance in Windows RIO Linux is steadily closing the gap. I believe FreeBSD still holds the record for the most packets switched per core per second, and that probably matters more for real world performance. Niall