7 ms·
I think the authors want to avoid thundering herd. You can find this basic pattern in the book UNIX Network Programming.
by luikore 11y ago
I think the authors want to avoid thundering herd. You can find this basic pattern in the book UNIX Network Programming.
- rdtsc 11y agoHmm, thought that was fixed 10 years ago or so. I can't believe the standard accept() call will wake up all threads on a modern Linux kernel. Maybe if it is using epoll/select/etc. it would exhibit the thundering herd issue.
- jvink 11y agoCorrect. The accepting socket is shared between multiple workers which each have its own fd for epoll or kqueue. Because of this a form of serialising the accepts between said workers is needed to avoid unnecessary wakeups.
- rdtsc 11y agoActually that is being changed: http://lwn.net/Articles/633422/ http://lwn.net/Articles/633422/ See part about EPOLLEXCLUSIVE