Much improved sendfile(2) kernel implementation

Andre Oppermann andre at freebsd.org
Thu Sep 21 05:29:34 PDT 2006


Peter Jeremy wrote:
> On Wed, 2006-Sep-20 23:59:13 +0200, Andre Oppermann wrote:
>> I have rewritten kern_sendfile() to work in two loops, the inner which turns
>> as many pages into mbufs as it can up to the free send socket buffer space.
> 
> The 64K blocks sounds good but how does this interact with TCP slow
> start?  Is there the possibility that a couple (for some reasonably
> large value of 'couple') of TCP connections slowly accepting a file
> could eat all the mbuf space?

This danger is and has been always present.  This normal socket behavior
and happens no matter which method (write or sendfile) you use.  Even the
current sendfile(2) fills the socket buffer when the connection is in slow
start.  It just spends more CPU once the connection is going and getting
throughput (and it doesn't make much use of TSO there).

-- 
Andre


More information about the freebsd-net mailing list