Re: threadlets as 'naive pool of threads', epoll, some measurements

Ingo Molnar
2007-02-26T10:51:25Z

update:

> i have tried the one Evgeniy provided in the URL:
>
> http://tservice.net.ru/~s0mbre/archive/kevent/evserver_epoll.c
>
> and 'ab -k -c8000 -n80000' almost always aborts with:
>
> apr_socket_recv: Connection reset by peer (104)
>
> in the few cases it finishes, i got the following epoll result, over
> gigabit ethernet, on an UP Athlon64 box:
>
> eserver_epoll: 7800 reqs/sec

eserver_epoll.c had a number of bugs. The most serious one was the
apparently buggy use of "EPOLLET" (edge-triggered events). Removing that
and moving epoll to level-triggered (which is slower but does not result
in missed events) gives:

eserver_epoll: 9400 reqs/sec

> the same with the most naive implementation of the same, using
> threadlets:
>
> eserver_threadlet: 5800 reqs/sec

eserver_epoll_threadlet: 9400 reqs/sec

as expected, the level of extra blocking triggered by this is low - even
if the full request function runs without nonblock assumptions.

Ingo