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

From: Ingo Molnar
Date: Mon Feb 26 2007 - 05:51:44 EST



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
-
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/