Re: Syslets, Threadlets, generic AIO support, v6

From: Ingo Molnar
Date: Wed May 30 2007 - 09:04:30 EST



* Jeff Garzik <jeff@xxxxxxxxxx> wrote:

> >>You should pick up the kevent work :)
> >
> >3 months ago i verified the published kevent vs. epoll benchmark and
> >found that benchmark to be fatally flawed. When i redid it properly
> >kevent showed no significant advantage over epoll. Note that i did
> >those measurements _before_ the recent round of epoll speedups. So
> >unless someone does believable benchmarks i consider kevent an
> >over-hyped, mis-benchmarked complication to do something that epoll
> >is perfectly capable of doing.
>
> You snipped the key part of my response, so I'll say it again:
>
> Event rings (a) most closely match what is going on in the hardware
> and (b) often closely match what is going on in multi-socket,
> event-driven software application.

event rings are just pure data structures that describe a set of data,
and they have advantages and disadvantages. For the record, we've
already got direct experience with rings as software APIs: they were
used for KAIO and they were an implementational and maintainance
nightmare and nobody used them. Kevent might be better, but you make it
sound as if it was a trivial design choice while it certainly isnt!

Sure, for hardware interfaces like networking cards tx and rx rings are
the best thing but that is apples to oranges: hardware itself is about
_limited_ physical resources, matching a _limited_ data structure like a
ring quite well. But for software APIs, the built-in limit of rings
makes it a baroque data structure that has a fair share disadvantages in
addition to its obvious advantages.

> This is not something epoll is capable of doing, at the present time.

epoll is very much is capable of doing it - but why bother if something
more flexible than a ring can be used and the performance difference is
negligible? (Read my other reply in this thread for further points.)

but, for the record, syslets very much use a completion ring, so i'm not
fundamentally opposed to the idea. I just think it's seriously
over-hyped, just like most other bits of the kevent approach. (Nor do we
have to attach this to syslets and threadlets - kevents are an
orthogonal approach not directly related to asynchronous syscalls -
syslets/threadlets can make use of epoll just as much as they can make
use of kevent APIs.)

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