On Mon, 2016-02-15 at 11:03 +0100, Claudio Scordino wrote: > Hi Eric, > > 2016-02-12 11:35 GMT+01:00 Eric Dumazet <eric.duma...@gmail.com>: > > On Fri, 2016-02-12 at 09:53 +0100, Claudio Scordino wrote: > > > >> This makes the application waste time in entering/exiting the kernel > >> level several times. > > > > syscall overhead is usually small. Real cost is actually getting to the > > socket objects (fd manipulation), that you wont avoid with a > > super-syscall anyway. > > Thank you for answering. I see your point. > > However, assuming that a switch from user-space to kernel-space (and > back) needs about 200nsec of computation (which I guess is a > reasonable value for a 3GHz x86 architecture), the 50th receiver > experiences a latency of about 10 usec. In some domains (e.g., > finance) this delay is not negligible.
I thought these domains were using multicast. > > Moving the "fan-out" code into kernel space would remove this waste of > time. IMHO, the latency reduction would pay back the 100 lines of code > for adding a new syscall. It wont reduce the latency at all, and add a lot of maintenance hassle. syscall overhead is about 40 ns. This is the time taken to transmit ~50 bytes on 10Gbit link. 40ns * 50 = 2 usec only. Feel free to implement your idea and test it, you'll discover the added complexity is not worth it.