How are you using ab? What exactly are you testing?
ab -n 1000 -n 150000 http://localhost/1
And remember why poll() is inefficient: it's the scanning of the array of active file descriptors. The whole array needs to be scanned even if only one socket has a new event. Therefore you'd expect performance problems to show up with extremely large numbers of active connections. If you're not testing with concurrency of 1000 ~ 4000 connections, I wouldn't expect to see much of a difference, and that will be tough with ab which uses one thread per connection, IIRC.
Still slower
It's difficult to compare your epoll() implementation to the original poll() as it's spread throughout the driver. Please consider using something like NsPoll(), which is a very thin wrapper.
What i 've sent is a piece of code that should replace DriverThread function in driver.c, after that it compiles and runs. No spreading
-- Vlad Seryakov 571 262-8608 office [EMAIL PROTECTED] http://www.crystalballinc.com/vlad/