Re: [PATCH v3 0/3] epoll: introduce round robin wakeup mode
From: Ingo Molnar <hidden>
Date: 2015-02-25 07:38:14
Also in:
linux-fsdevel, lkml
* Jason Baron [off-list ref] wrote:
Hi, When we are sharing a wakeup source among multiple epoll fds, we end up with thundering herd wakeups, since there is currently no way to add to the wakeup source exclusively. This series introduces a new EPOLL_ROTATE flag to allow for round robin exclusive wakeups. I believe this patch series addresses the two main concerns that were raised in prior postings. Namely, that it affected code (and potentially performance) of the core kernel wakeup functions, even in cases where it was not strictly needed, and that it could lead to wakeup starvation (since we were are no longer waking up all waiters). It does so by adding an extra layer of indirection, whereby waiters are attached to a 'psuedo' epoll fd, which in turn is attached directly to the wakeup source.
sched/wait: add __wake_up_rotate()
include/linux/wait.h | 1 + kernel/sched/wait.c | 27 ++++++++++++++++++++++
So the scheduler bits are looking good to me in principle, because they just add a new round-robin-rotating wakeup variant and don't disturb the others. Is there consensus on the epoll ABI changes? With Davide Libenzi inactive eventpoll appears to be without a dedicated maintainer since 2011 or so. Is there anyone who knows the code and its usages in detail and does final ABI decisions on eventpoll - Andrew, Al or Linus? Thanks, Ingo