top | item 9558776 (no title) luikore | 10 years ago I think the authors want to avoid thundering herd. You can find this basic pattern in the book UNIX Network Programming. discuss order hn newest jvink|10 years ago Correct.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|10 years ago Actually that is being changed:http://lwn.net/Articles/633422/See part about EPOLLEXCLUSIVE load replies (1) rdtsc|10 years ago Hmm, 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|10 years ago Correct.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|10 years ago Actually that is being changed:http://lwn.net/Articles/633422/See part about EPOLLEXCLUSIVE load replies (1)
rdtsc|10 years ago Actually that is being changed:http://lwn.net/Articles/633422/See part about EPOLLEXCLUSIVE load replies (1)
rdtsc|10 years ago Hmm, 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|10 years ago
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|10 years ago
http://lwn.net/Articles/633422/
See part about EPOLLEXCLUSIVE
rdtsc|10 years ago
Maybe if it is using epoll/select/etc. it would exhibit the thundering herd issue.