On Wed, Mar 28, 2012 at 04:09:24PM +0200, richard -rw- weinberger wrote: > On Wed, Mar 28, 2012 at 3:57 PM, Hagen Paul Pfeifer <hagen@xxxxxxxx> wrote: > > High performance server sometimes create one listening socket (e.g. port > > 80), create a epoll file descriptor and add the socket. Afterwards > > create SC_NPROCESSORS_ONLN threads and wait for events. This often > > result in a thundering herd problem because all CPUs are scheduled. > > > > This patch add an additional flag to epoll_ctl(2) called EPOLLEXCLUSIVE. > > If a descriptor is added with this flag only one CPU is scheduled in. > > > > Signed-off-by: Hagen Paul Pfeifer <hagen@xxxxxxxx> > > --- > > Dave rejected the patch and said not network specific. Because there > > is no epoll maintainer this time directly. > > CC'ing maintainers for you... > Please use scripts/get_maintainer.pl. > Hmmm...Looking at ep_poll() it does an '__add_wait_queue_exclusive()'. So, I *think* epoll_wait() should do what you want, if you are waiting on the same epfd in all the threads. I think the case you are describing is where each thread does its own ep_create(), and then a subsequent epoll_wait() on the fd from the create? So, I *think* you can get what you want without adding this flag. Thanks, -Jason -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html