Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It’s crazy thar sendmmsg/recvmmsg are considered “modern”… i mean, they’ve been around for quite a while.

I was expecting to see io_uring mentioned somewhere in the linux section of the article.



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


Will 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.


> 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_zeroco...

- the paper: https://netdevconf.org/2.1/papers/debruijn-msgzerocopy-talk....

- presentation about the paper: https://netdevconf.org/2.1/session.html?debruijn




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: