Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3

Evgeniy Polyakov
2007-02-26T10:45:18Z

On Mon, Feb 26, 2007 at 11:31:17AM +0100, Ingo Molnar (mingo@elte.hu) wrote:
>
> * Ingo Molnar <mingo@elte.hu> wrote:
>
> > please also try evserver_epoll_threadlet.c that i've attached below -
> > it uses epoll as the main event mechanism but does threadlets for
> > request handling.
>
> find updated code below - your evserver_epoll.c spuriously missed event
> edges - so i changed it back to level-triggered. While that is not as
> fast as edge-triggered, it does not result in spurious hangs and
> workflow 'hickups' during the test.

Hmm, exact the same evserver_epoll.c you downloaded works ok for me,
although yes, it is buggy in that regard that it does not contain socket
close when data is transferred.

> Could this be the reason why in your testing kevents outperformed epoll?

I will try to check. In theory without _ET it should perfoem much worse,
but in practice its performance is essentially the same (the same applies
to kevent without KEVENT_REQ_ET flag - since the same socket almost never
is used several times, it is purely zero overhead to have or not have that
flag set).

> Also, i have removed the set-nonblocking calls because they are not
> needed under threadlets.
>
> [ to build this code, copy it into the async-test/ directory and build
> it there - or copy the *.h files from async-test/ directory into your
> build directory. ]

Ok, right now I'm compiling kevent/threadlet tree on my test machines.

> Ingo

--
Evgeniy Polyakov