Date: Mon, 12 Dec 2005 08:38:35 -0600 (CST) From: Mike Silbersack <silby@silby.com> To: Cedric Tabary <ced@grumly.eu.org> Cc: freebsd-hackers@freebsd.org Subject: Re: mmap() sendfile() Message-ID: <20051212083537.T78724@odysseus.silby.com> In-Reply-To: <20051212083930.GC91837@efrei.fr> References: <20051212083930.GC91837@efrei.fr>
next in thread | previous in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-379007335-1134398315=:78724 Content-Type: TEXT/PLAIN; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE 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=E9dric My memory escapes me on all the details, but there were two potential=20 reasons not to use sendfile with 4.x that no longer apply in 5.x and=20 above: 1. Sendfile used to send small files inefficiently, sending the http=20 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=20 uses a single kernel buffer for all copies of the same block of the same=20 file, whereas the old implementation made an in-kernel copy of each block,= =20 making it no more memory efficient than using mbufs. So, if there was a reason to not use sendfile under 4.x, it's probably not= =20 true anymore. Someone sent me a patch to thttpd which made it more efficient on FreeBSD= =20 a looooooong time ago, I don't recall what changes he had made. Mike "Silby" Silbersack --0-379007335-1134398315=:78724--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051212083537.T78724>