Messages in this thread | | | Date | Mon, 26 Feb 2007 11:45:07 +0100 | From | Ingo Molnar <> | Subject | Re: threadlets as 'naive pool of threads', epoll, some measurements |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |