8 ms·
io_uring doesn't really have equivalent[1], it can't batch multiple UDP diagrams, best it can do is batch multiple sendmsgs and recvmsgs. GSO/GRO is the way to
by Cloudef 1y ago
io_uring doesn't really have equivalent[1], it can't batch multiple UDP diagrams, best it can do is batch multiple sendmsgs and recvmsgs. GSO/GRO is the way to go. sendmmsg/recvmmsg are indeed very old, and some kernel devs wish they could sunset them :)
1: https://github.com/axboe/liburing/discussions/1346 https://github.com/axboe/liburing/discussions/1346
- LtdJorge 1y agoWill ZCRX help here? I’m not sure it supports UDP. It should provide great speed-ups but it requires hardware support which is very scarce for now.
- znpy 1y ago> Will ZCRX help here? Do you mean zero-copy rx by ZCRX? If so, io_uring should support that, but you need a kernel recent enough. It supports both zero-copy rx/tx on tcp and udp afaik, and there was a paper from the google engineers that implemented zero-copy send/recv (originally for tcp only) showing that the whole endeavor was worth it when the payload was >= 20kb in size (iirc). It could be interesting to see if that's still the case with current state of linux, memory sticks, etc. I've looked up the links from when i dug into that: - https://www.kernel.org/doc/html/latest/networking/msg_zerocopy.html https://www.kernel.org/doc/html/latest/networking/msg_zeroco... - the paper: https://netdevconf.org/2.1/papers/debruijn-msgzerocopy-talk.pdf https://netdevconf.org/2.1/papers/debruijn-msgzerocopy-talk.... - presentation about the paper: https://netdevconf.org/2.1/session.html?debruijn https://netdevconf.org/2.1/session.html?debruijn