Re: I/O completion ports for Linux

Dean Gaudet (dgaudet-list-linux-kernel@arctic.org)
Sun, 5 Apr 1998 12:49:12 -0700 (PDT)


On Tue, 31 Mar 1998, Theodore Y. Ts'o wrote:

> standards body for the Internet). This fellow is from.... ah.... a very
> large vendor which sells web browsers for Unix and NT. He was talking
> to me specifically about the possibility of adding I/O completion ports
> to Linux.

A certain webserver author for a very popular webserver also thinks
completion ports are necessary for the next generation of webservers.

See <http://www.cs.wustl.edu/~jxh/research/research.html> for lots of
details on various models of server architecture, and the whys and why
nots.

But I'm willing to be convinced that rt signals can do the job. As long
as I can get "wake-one" and "wake-the-most-recent-awake" semantics I
almost don't care what they look like. Last time this thread came up it
looked like rt signals could do the job with maybe a tiny bit of kernel
help. (The "wake the most recent awake" thing is an optimization for
L1/L2 locality.)

poll() and select() have problems scaling to multiple threads, in addition
to scaling to huge numbers of fds. In a server you frequently just want
to ask "hey give me a completed I/O transaction so I can do some more
processing". You don't want to know about ALL completed I/O transactions,
you just want one. poll(), select() (and Richard's poll2()) give
information on all completed transactions... which leads to O(m*n) systems
which can be done in O(1) with completion ports.

Dean

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu