Messages in this thread |  | | Date | Mon, 22 Jan 2001 11:13:44 -0700 | From | Val Henson <> | Subject | Re: Is sendfile all that sexy? |
| |
On Wed, Jan 17, 2001 at 11:32:35AM -0800, Linus Torvalds wrote: > In article <Pine.LNX.4.30.0101171454340.29536-100000@baphomet.bogo.bogus>, > Ben Mansell <linux-kernel@slimyhorror.com> wrote: > > > >The current sendfile() has the limitation that it can't read data from > >a socket. Would it be another 5-minute hack to remove this limitation, so > >you could sendfile between sockets? Now _that_ would be sexy :) > > I don't think that would be all that sexy at all. > > You have to realize, that sendfile() is meant as an optimization, by > being able to re-use the same buffers that act as the in-kernel page > cache as buffers for sending data. So you avoid one copy. > > However, for socket->socket, we would not have such an advantage. A > socket->socket sendfile() would not avoid any copies the way the > networking is done today. That _may_ change, of course. But it might > not. And I'd rather tell people using sendfile() that you get EINVAL if > it isn't able to optimize the transfer..
Yes, socket->socket sendfile is not that sexy. I actually did this for 2.2.16 in the obvious (and stupid) way, copying data into a buffer and writing it it out again. The performance was unsurprisingly _exactly_ identical to a userspace read()/write() loop.
There is a use for an optimized socket->socket transfer - proxying high speed TCP connections. It would be exciting if the zerocopy networking framework led to a decent socket->socket transfer.
-VAL - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |