Re: Signal driven IO

Chuck Lever (cel@monkey.org)
Wed, 17 Nov 1999 12:02:15 -0500 (EST)


On Tue, 16 Nov 1999, Theodore Y. Ts'o wrote:
> It's actually not clear poll() is a win; if you have scenario where you
> have multiple threads (possibly on an SMP system), by using signals, you
> can quickly and easily dispatch jobs to different worker threads by
> simply having different threads picking up the real-time signals.

i'm not sure threads can share an RT signal queue. wouldn't that be
required in order to dispatch work from RT signals amongst several
threads?

> One other observation, which an engineer from Netscape (who does IMAP
> server implementations for Linux and NT) points out is that NT
> completion ports have two features which RT SIGIO doesn't provide. One
> is processor affinity; on SMP systems, when a completion port becomes
> ready, the system will try to schedule the callback thread on the same
> processor which registered the callback originally. The other is thing
> which NT does is LIFO ordering when multiple completion ports are to be
> scheduled. Both of these strategies are an attempt to avoid cache
> misses.

while LIFO preserves CPU cache contents, it can be grossly unfair under
load, as you pointed out later. but that may even be moot if sigwaitinfo
can deliver a vector of events at once, instead of just a single event.

- Chuck Lever

--
corporate:	<chuckl@netscape.com>
personal:	<chucklever@netscape.net> or <cel@monkey.org>

The Linux Scalability project: http://www.citi.umich.edu/projects/linux-scalability/

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/