Re: [take22 0/4] kevent: Generic event handling mechanism.

Evgeniy Polyakov
2006-11-02T08:01:32Z

On Thu, Nov 02, 2006 at 08:46:41AM +0100, Eric Dumazet (dada1@cosmosbay.com) wrote:
> zhou drangon a écrit :
> >performance is great, and we are exciting at the result.
> >
> >I want to know why there can be so much improvement, can we improve
> >epoll too ?
>
> Why did you remove most of CC addresses but lkml ?
> Dont do that please...

Sure, since for example I'm not subscribed (fortunately) to lkml, and I
think you want me to answer the question too...

> Good question :)
>
> Hum, I think I can look into epoll and see how it can be improved (if
> necessary)

epoll can not be improved, since the whole polling is designed to have
several layers of dereferencing, kevent simplifies that chain noticebly.

> This is not to say we dont need kevent ! Please Evgeniy continue your work !

I will :)

> Just to remind you that according to
> http://www.xmailserver.org/linux-patches/nio-improve.html David Libenzi had
> to wait 18 months before epoll being officialy added into kernel.

kevent exists for about 10 month. We have plenty of time :)

> At that time, many applications were using epoll, and we were patching our
> kernels for that.
>
>
> I cooked a very simple program (attached in this mail), using pipes and
> epoll, and got 250.000 events received per second on an otherwise lightly
> loaded machine (dual opteron 246 , 2GHz, 1MB cache per cpu) with 10.000
> pipes (20.000 handles)

pipes will work with kevent's poll mechanisms only, so there will not be
any performance gain at all since it is essentially the same as epoll
design with waiting and rescheduling (all my measurements with
epoll vs. kevent_poll always showed the same rates), pipes require the same
notifications as sockets for maximum perfomance.
I've put it into todo list.

> It could be nice to add support for other event providers in this program
> (AF_INET & AF_UNIX sockets for example), and also add support for kevent,
> so that we really can compare epoll/kevent without a complex setup.
> I should extend the program to also add/remove sources during lifetime, not
> only insert at setup time.

If there would exist sockets support, then I could patch it to work with
kevents.

--
Evgeniy Polyakov