Re: [PATCH] rfc: threaded epoll_wait thundering herd

From: Eric Dumazet
Date: Sat May 05 2007 - 00:16:38 EST

Davi Arnaut a écrit :

If multiple threads are parked on epoll_wait (on a single epoll fd) and
events become available, epoll performs a wake up of all threads of the
poll wait list, causing a thundering herd of processes trying to grab
the eventpoll lock.

This patch addresses this by using exclusive waiters (wake one). Once
the exclusive thread finishes transferring it's events, a new thread
is woken if there are more events available.

Makes sense?

Yes it makes sense.

But... what happens if the thread that was chosen exits from the loop in ep_poll() with res = -EINTR (because of signal_pending(current))

Me thinks in this case some ready events can wait forever (up to next ep_poll_callback() or another thread enters ep_poll())

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at