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.

So, if there was a reason to not use sendfile under 4.x, it's probably not true anymore.

Someone sent me a patch to thttpd which made it more efficient on FreeBSD a looooooong time ago, I don't recall what changes he had made.

Mike "Silby" Silbersack
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to