[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALx6S34dXkRMyW72HKw-j+Qsgrt3P1Xpz1ktf41hoXNak-=cOg@mail.gmail.com>
Date: Fri, 12 Feb 2016 15:25:19 +0100
From: Tom Herbert <tom@...bertland.com>
To: Claudio Scordino <claudio@...dence.eu.com>
Cc: Linux Kernel Network Developers <netdev@...r.kernel.org>
Subject: Re: Same data to several sockets with just one syscall ?
On Fri, Feb 12, 2016 at 9:53 AM, Claudio Scordino
<claudio@...dence.eu.com> wrote:
> Hi all.
>
> Suppose I have an application that needs to send the very same data to
> several sockets already connected. In this case, the application has
> to call the sendto() syscall several times:
>
> for(...)
> sendto(...)
>
> This makes the application waste time in entering/exiting the kernel
> level several times.
> Moreover, if I'm not wrong, the kernel is free to execute pending work
> (e.g., softirqs) when returning from a syscall, making the application
> experience further latency.
>
> I therefore wonder if a mechanism exists for sending the data to
> several sockets using just a single syscall. If not, has anybody ever
> thought about adding a syscall like the following ?
>
> sendto-multicast(..., int number_of_sockets, int* const sockets [])
>
> I can't see any obvious reason why such an approach could be wrong.
>
The design of KCM allows for this where sendmmsg can be used to send
messages over TCP to various connections. Overcoming HOL blocking
becomes the biggest issue to address with something like that I think.
Using recvmmsg to get messages from multiple TCP sockets should be
doable in KCM.
Tom
> Many thanks,
>
> Claudio
Powered by blists - more mailing lists