httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dean Gaudet <>
Subject Re: Apache In The News: Latest PC Week Article
Date Tue, 16 Jun 1998 18:40:06 GMT
Yup completion ports are way cool.  I've been bemoaning the lack of
"wake-one" semantics on unix ever since I learned of them.  Unix only has
"wake-all" semantics (i.e. poll, select)... for something like accept() 
there are some versions that do have wake-one, but many implement it as
wake-all and then sleep again inside the kernel.

It looks like wake-one is possible using POSIX rt signals and aio... but I
haven't dug into it far enough. 

I also like TransmitFile (which exists as sendfile() in hpux, and will be
in the next rev of solaris, and irix)... but on unix there's a large
problem with using it:  limited file handles.  I posted a proposed API for
dealing with that.

Unix has some catching up to do in the very high end. 


On Tue, 16 Jun 1998, W G Stoddard wrote:

> IIS likely uses a url keyed file handle cache along with some advanced system
> APIs, TransmitFile (aka send_file) and AcceptEx (aka, accept_and_receive) with
> completion ports for each to get their good performance numbers. I've seen a
> minimal webserver implementation using these APIs that  performs better than
> IIS. (IIS appears to be close to optimum). Caching file handles allows you to
> cache all the files in a SpecWeb benchmark without worring about double
> buffering the data. This is a truely useful technique;  not just some benchmark
> toy as some other posters have implied.
> The completion ports are actually a pretty slick idea in that they allow you to
> prevent thread overscheduling (ie, too many threads completing a unit of work,
> checking a work queue, finding no available work, then going to sleep. The
> ideal situation is to always have slightly more work to do than threads
> available to do it.
> Bill Stoddard

View raw message