Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 May 2003 11:53:05 +0400 (MSD)
From:      Igor Sysoev <is@rambler-co.ru>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        arch@freebsd.org
Subject:   Re: sendfile(2) SF_NOPUSH flag proposal
Message-ID:  <Pine.BSF.4.21.0305291139090.52120-100000@is>
In-Reply-To: <3ED59AD7.AA0CA6D5@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 28 May 2003, Terry Lambert wrote:

> Igor Sysoev wrote:

> > The portability argument is bogus because sendfile() portability is nonsense.
> 
> Darwin has sendfile.  See the released source code: it matches
> the FreeBSD semantics, from what I can tell.

So now FreeBSD/Darwin is second pair after AIX/MVS that has the same sendfile()
prototype.  It surely improves the sendfile() portability.  Undoubtedly.

> > The drawback that really annoyed me is that sendfile() blocks on a reading
> > from a disk while a sending to non-blocking socket.  Although I see three
> > workarounds it's much better to fix this inside sendfile().
> 
> There's no workaround for the latency issue, which comes from
> the fact that a trap handles the request for more pages, and
> that blocks all callers.  Threads has the same problem in libc_r.

The workaround idea is simple - a preloading.  But implementation on user
level is complex.  In FreeBSD 4.x I see three ways:

*) the use of aio_read() to read the single bytes;
*) the use rfork()ed helper processes to read the single bytes;
*) and the use the pool of rfork()ed processes to handle connections.

But all of them requires significant changes of an application.

> > Five people ?
> 
> Bill Fenner, Matt Dillon, Peter Jeremy, Marc Slemko, Terry Lambert,
> Garance Droshin.

At time of your mail there were only 4 people, in order of appearance:
Peter Jeremy, you, Matt Dillon, and Marc Slemko. Bill Fenner's email
was sent one and a half hour after yours and just before my response.
Garance Droshin's mail was sent several hours later.


Igor Sysoev
http://sysoev.ru/en/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0305291139090.52120-100000>