><snip> > >So I dunno if I'm going to go ahead and do that myself, but at least I've >scoped out the situation. Before I did any work, I'd measure CPU >usage under a simulated load of 2000 clients, just to verify that >poll() was indeed a bottleneck (ok, can't imagine it not being a >bottleneck, but it's nice to have a baseline to compare the improved >version against).
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. /Arjen