* 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