Re: [PATCH] Implementation of the sendgroup() system call

From: Avi Kivity
Date: Mon May 04 2009 - 05:59:56 EST


Andi Kleen wrote:
My guess it's more the copies than the calls? It sounds like
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.
An aio udp send could accomplish both multiple packets per call, and

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.

I would love them for kvm. As far as I understand, the only complication is proper socket destructors so we can put_page() the memory.

Right now sendfile() is only usable for read-only files. It's not usable for files that change, or non-file memory.

Or perhaps simple send to a local multicast group and let
some netfilter module turn that into regular UDP.
Sounds hacky and rooty.

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.

I meant, you need root to insert that netfiler module. It's workable as a one off but it's not something reusable.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/