mmap() sendfile()

Iasen Kostov tbyte at otel.net
Wed Dec 14 09:44:23 PST 2005


On Mon, 2005-12-12 at 18:20 +0100, Cedric Tabary wrote:
> On 12/12/2005 08:38, Mike Silbersack wrote:
> > On Mon, 12 Dec 2005, Cedric Tabary wrote:
> > 
> > >If it is true, doing a sendfile() on some very big files (even if not
> > >keeping the descriptor open after) will kill the cache ?
> > >
> > >Please help me to understand why this patch ? and the difference between
> > >sendfile() and mmap() at the memory or cache level..
> > >
> > >Cédric
> > 
> > My memory escapes me on all the details, but there were two potential 
> > reasons not to use sendfile with 4.x that no longer apply in 5.x and 
> > above:
> > 
> > 1.  Sendfile used to send small files inefficiently, sending the http 
> > headers in one packet and the data in another.  I fixed this in 5.x.
> > 
> > 2.  Alan Cox improved the memory efficiency of sendfile greatly, it now 
> > uses a single kernel buffer for all copies of the same block of the same 
> > file, whereas the old implementation made an in-kernel copy of each block, 
> > making it no more memory efficient than using mbufs.
> 
> What about using sendfile() or mmap() on NFS ?

	My expirience to the moment is that sendfile() is way slower when used
to read large files from NFS and send them to many users via some HTTPd.
Particulary thttpd and lighttp are 2 or more times (!) slower than
xshttpd in that setup (xshttpd is using mmap).

> 
> Cédric
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"



More information about the freebsd-hackers mailing list