sendfile(2) SF_NOPUSH flag proposal
Igor Sysoev
is at rambler-co.ru
Thu May 29 00:53:08 PDT 2003
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/
More information about the freebsd-arch
mailing list