On Linux, the (currently) excessively large memory buffers size
defaults hide some bugs in the TCP implementation regarding
edge-triggered epoll wakeups.

Setting low :sndbuf values (or lowering tcp_wmem/tcp_mem) can cause
problems) for servers using edge-triggered I/O.  yahns uses one-shot
epoll (a special case of edge-triggering), so is also affected;
nginx uses edge-triggering, so it would also be affected.

Most other epoll users I know about use level-triggering, so are not
affected.

For now, leaving buffers at defaults should be sufficient and I've
yet to encounter this problem in the wild with default settings on
current kernels.

These problems are being worked on in net...@vger.kernel.org:

http://mid.gmane.org/20150520155253.862022...@prod-mail-relay06.akamai.com
http://mid.gmane.org/20150506155223.9743a2...@prod-mail-relay06.akamai.com
http://mid.gmane.org/1431718770-3815-1-git-send-email-eduma...@google.com

Fwiw, I have encountered and helped fix missing wakeup bugs in Linux
before, and I'm sure there'll be new bugs found in the future when
handling millions of sockets.

Reply via email to