Skip site navigation (1)Skip section navigation (2)
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>