* Ingo Molnar [off-list ref] wrote:
quoted
[...] However, I think the userspace API change is less
clear since epoll_wait() doesn't currently have an
'input' events argument as epoll_ctl() does.
... but the change would be a bit clearer and somewhat
more flexible: LIFO or FIFO queueing, right?
But having the queueing model as part of the epoll
context is a legitimate approach as well.
Btw., there's another optimization that the networking code
already does when processing incoming packets: waking up a
thread on the local CPU, where the wakeup is running.
Doing the same on epoll would have real scalability
advantages where incoming events are IRQ driven and are
distributed amongst multiple CPUs.
Where events are task driven the scheduler will already try
to pair up waker and wakee so it might not show up in
measurements that markedly.
Thanks,
Ingo