[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AE90C24D6B3A694183C094C60CF0A2F6026B746C@saturn3.aculab.com>
Date: Fri, 6 Dec 2013 16:30:41 -0000
From: "David Laight" <David.Laight@...LAB.COM>
To: "Rick Jones" <rick.jones2@...com>,
"Eric Dumazet" <eric.dumazet@...il.com>,
"David Miller" <davem@...emloft.net>
Cc: "netdev" <netdev@...r.kernel.org>
Subject: RE: [PATCH net-next] tcp: auto corking
> From: Rick Jones
> On 12/06/2013 02:30 AM, David Laight wrote:
> >> From: Eric Dumazet <edumazet@...gle.com>
> >>
> >> 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
Powered by blists - more mailing lists