Arjen Wolfs wrote: > The ircu version that supports kqueue and /dev/poll is currently being > beta-tested on a few servers on the Undernet. The graph at > http://www.break.net/ircu10-to-11.png shows the load average (multiplied by > 100) on a on a server with 3000-4000 clients using poll(), and /dev/poll. > The difference is obviously quite dramatic, and the same effect is being > seen with kqueue. You could also try some of the /dev/poll patches for > linux, which migth save you writing a new engine. Note that ircu 2.10.11 is > still beta though, and is known to crash in mysterious ways from time to time.
None of the original /dev/poll patches for Linux were much good, I seem to recall; they had scaling problems and bugs. The /dev/epoll patch is good, but the interface is different enough from /dev/poll that ircd would need a new engine_epoll.c anyway. (It would look like a cross between engine_devpoll.c and engine_rtsig.c, as it would need to be notified by os_linux.c of any EWOULDBLOCK return values. Both rtsigs and /dev/epoll only provide 'I just became ready' notification, but no 'I'm not ready anymore' notification.) And then there's /dev/yapoll (http://www.distributopia.com), which I haven't tried yet (I don't think the author ever published the patch?). Anyway, the new engine wouldn't be too hard to write, and would let irc run fast without a patched kernel. - Dan