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 keep the repo alive at https://github.com/virgiliofornazin/asio/tree/feature/multiple_datagram_buff... it's working rock solid on a vpn platform capable of about 3gbps udp without packet loss in a 10gbe 9k mtu network. On Thu, Jul 18, 2024 at 5:59 PM Christian Mazakas via Boost < boost@lists.boost.org> wrote:
On Wed, Jul 17, 2024 at 1:31 PM Niall Douglas via Boost < boost@lists.boost.org> wrote:
Anyway point is having the kernel tell you the buffers filled instead of you telling it what buffers to fill is the right design. This is why LLFIO's read op allowed reads to fill in buffers read completely differently to buffers supplied, incidentally.
Ha ha, indeed.
Actually, it might be nice to compare implementation notes. For Fiona, I create a buffer sequence for the user by over-allocating for each buffer and making an intrusive doubly-linked list. This means that the user gets a mutable buffer sequence without the need for any intermediate allocations.
It also enables nice constant time push/pop and slicing. I was heavily inspired by Rust and Asio when coming up with the buffer abstraction: https://github.com/cmazakas/fiona/blob/main/test/buffer_test.cpp
If you'd like, I'd really appreciate any implementation feedback on what's going on here. Not many seem to have the expertise in io_uring and this kind of stuff so it's rare when I get to really talk shop.
Maybe I need to actually sit down and write some docs because I realize there's a lot to the codebase here and it's hard to convey everything just using email.
- Christian
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost