My guess it's more the copies than the calls? It sounds likeAn aio udp send could accomplish both multiple packets per call, and
you want sendfile() for UDP. I think that would be a cleaner solution
than such a specific hack for your application. It would
have the advantage of saving the first copy too and be truly zero copy on capable NICs.
AIO sockets are a lot of work. There have been various attempts
over the years, but they are very difficult. This was mostly
for TCP -- possibly UDP would be a bit easier -- but still
many complications. It would also need a lot of changes and
you would need to convince the network maintainers that they
are a good idea.
Or perhaps simple send to a local multicast group and letSounds hacky and rooty.
some netfilter module turn that into regular UDP.
rooty? Everyone can send to all directions anyways.
It wouldn't be perfect, but quite usable as a short term solution
for a production server.