poll vs. epoll
dank at kegel.com
Thu Aug 19 19:59:21 CDT 2004
> I noticed that in server/fd.c, the wineserver is using "poll" to select
> between file descriptors. The application is going through this code
> over 2000 times a second, with over 380 file descriptors each time. I am
> wondering whether this can be the cause of the slowdown.
> One of the possible solutions to this would be to use epoll instead.
> This, of course, would have to be backed by a configure check, as not
> all systems for which wine is intended support epoll. Another, arguably
> better, solution would be to use libevent for this purpose. Libevent has
> the distinct advantage that it automatically chooses the best tool for
> the job (epoll, poll, /dev/poll, or if all else fails, select).
By all means, let's try epoll.
FWIW, I wrote a wrapper layer that illustrates how to detect
whether epoll etc. are available. I'm convinced that *runtime*
detection is the only way to go. Compile time detection is insufficient.
My code is at http://kegel.com/rn
If you actually try to use it, let me know. I expect it might
be useful mostly as a guide. It's edge-trigger oriented, but
you can trivially add the flag (or remove the flag) needed to
get level-triggered behavior again if you really need it.
I highly recommend using edge-triggered behavior, though.
My technical stuff: http://kegel.com
My politics: see http://www.misleader.org for examples of why I'm for regime change
More information about the wine-devel