Samuel, While running a few tests with Christopher's patch in order to integrate it, I managed to find a case where I'm still seeing quite a number of calls to epoll_wait(0)=0. Studying the patch, I found that there's a corner case which it doesn't address, which is where an fd is processed and removed from the cache. By changing the test a little bit, I managed to reduce the number of empty calls to epoll_loop by about 1/3 on my test case. But I've also just noticed that at too low loads I can now miss some events so I'm not sharing it now. And I don't know if the remaining ones wakeups are valid so I want to study all this compared to a single-threaded test.
It's possible that sometimes we wake up too aggressively even maybe for the tasts, though that's pure speculation. We'll keep you updated on this. Cheers, Willy

