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.
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 http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/