Skip to contentSkip to conversation

Efficient Event Handling In Linux?

DISCUSSION David E. Weekly 1 participant 1 message Aug 8, 2001

lore
Share & tools
lore
#0 lore raw

Hey all. I've been looking at efficient event-handling mechanisms (for I/O on sockets, disk, devices) on various operating systems; poking through the list archives reveals some excellent, juicy discussions that flared up around late October, with Linus strongly in favor of a new "get_events/bind_event()" style, some parties in favor of a FreeBSD kqueue style, and some fans of Solaris 8's /dev/poll flavor.

As far as I could tell (and my most humble of apologies if this is not the case), the discussion trailed off without any real resolution as to what would actually be done to empower Linux with efficient event handling; perhaps I missed it, but I couldn't find Linus's get_events/bind_event calls, nor could I find /dev/poll or kqueue-styled interfaces integrated into the latest kernel.

I did find what looks to be an excellent patch in the way of /dev/epoll (written up here:
http://www.xmailserver.org/linux-patches/nio-improve.html). According to the benchmarks he's got, the patch really spanks /dev/poll and POSIX SIGIO. I'm going to begin testing with it soon and was hoping to get some feel for whether /dev/epoll might end up in the kernel mainstream at some point in the not-too-distant future? If not, what? It seems a shame for Linux to be somewhat behind Solaris (/dev/poll), FreeBSD (kqueue), and Windows2000 (Completion Ports) in performance; it would be fabulous to see formal acceptance of /dev/epoll or something equivalent.

Is Linux really not that far behind performance-wise (i.e., most of these benchmarks are misleading)? Have there already been good performance patches in this style? Please fill me in, though I've got a feeling I'm not the only one a little clueless on what the current state of affairs is in this department. =)

-david

[reference: Linus's suggestion for get_events/bind_event()]
http://uwsg.iu.edu/hypermail/linux/kernel/0010.3/0003.html