Zero-copy networking
Zero-copy networking
Posted Jul 6, 2017 17:32 UTC (Thu) by sorokin (guest, #88478)In reply to: Zero-copy networking by marcH
Parent article: Zero-copy networking
Although I agree that having this type of function in kernel would be good, I believe the benefits of it are small compared to what we have now. Let me explain. There is 2 options: either the chunk of data you expect is small in size or it is big.
In case it is small. It is likely fit one packet or a few packets with a small interval between them. In this case by the time the program is woken up tailing packets have already arrived.
In case it is big. The program is unlikely to buffer all the data in memory. Instead it is likely to write this data to disk/handle it somehow as it is coming. And in this case waking up the program is what you want.
So the only use case for this function would be a program that receives large amount of data buffering it in memory until the last byte arrives.
Posted Jul 6, 2017 17:43 UTC (Thu)
by marcH (subscriber, #57642)
[Link]
This fully qualifies the definition of a race condition.
On one hand there's the performance question which you addressed. On the other hand there's the fact that some applications don't bother coding a retry loop around the recv() call. Combine this with the race condition above and let the fun begin.
Zero-copy networking