Subject: Re: fdalloc() & select optimization
To: Jonathan Stone <jonathan@dsg.stanford.edu>
From: Rafal Boni <rafal@mediaone.net>
List: tech-kern
Date: 04/03/2000 15:07:31
In message <200004022303.QAA00930@Greyhawk.DSG.Stanford.EDU>, you write:
[...]
-> But as I understand it, the real win comes from abandoning select()
-> and going to a getnextevent() API: register interest in (some set of)
-> events on a given FD, and the kernel remembers the set of interested
-> FDs, and notifies the app about events. None of this copying large
-> bitmasks or poll() arrays in and out every time.
->
-> Would anyone buy _that_? (Assuming we could get the select()
-> improvements, which they kinda rely on?)
I'd certainly buy it, seeing as I'm currently using Linux for this exact
reason for a certain application. Scaling an event-driven server to tens
of thousands of connections in actually very easy (and from my benchmarks
quite performant) using this model. I'd love to get a similar interface
for NetBSD.
The other choice is to do all the network processing in the kernel via
STREAMS (if your OS of choice has 'em and you're into S&M 8-), or to build
an application-level-framing system (like the MIT exokernel and stuff that's
derived from it). In both cases, the environment is much more constrained
than your generic *NIX userland APIs, which makes it much harder to use if
you're doing something other than pure packet processing (or serving of
mostly static content).
--rafal
----
Rafal Boni rafal@mediaone.net