> From: Rick Jones > On 12/06/2013 02:30 AM, David Laight wrote: > >> From: Eric Dumazet <edumazet@xxxxxxxxxx> > >> > >> With the introduction of TCP Small Queues, TSO auto sizing, and TCP > >> pacing, we can implement Automatic Corking in the kernel, to help > >> applications doing small write()/sendmsg() to TCP sockets. > > > > Presumably this has the greatest effect on connections with Nagle > > disabled? > > I was wondering why Nagle didn't catch these things as well. The > netperf command line Eric provided though didn't include the > test-specific -D option that would have disabled Nagle. At least not > unless the "super_netperf" wrapper was adding it. > > So, why doesn't Nagle catch what is presumably a sub-MSS send while > there is data outstanding on the connection? Nagle should block sends after 2 short sends (waiting for mss or ack). Trouble is Nagle is only any use for single-directional traffic and command-response where both messages are smaller than the mss. For everything else Nagle is a right PITA. Of course, if you disable Nagle slow start and delayed acks conspire together to seriously reduce throughput on zero-delay local links. (Try sending 50 bytes every millisecond with no return traffic. Slow start only allows 4 packets be sent (not 4 MSS) even when an mss of data is buffered, but that isn't enough to force an ack out before the timer expires.) David ��.n��������+%������w��{.n����z����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f