On Tue, 2016-04-19 at 20:36 -0400, David Miller wrote: > From: Eric Dumazet <eduma...@google.com> > Date: Mon, 18 Apr 2016 13:56:12 -0700 > > > 1 % packet losses are common today, and at 100Gbit speeds, this > > translates to ~80,000 losses per second. If we are unlucky and > > first MSS of a 45-MSS TSO is lost, we are cooking 44 MSS segments > > at rtx instead of a single 44-MSS TSO packet. > > I'm having trouble understanding this. > > If the first mss is lost, then we simply chop the 45 MSS TSO skb into > two pieces. The first piece is a 1 MSS chunk for the retransmit, and > the second piece is remaining 44 MSS TSO skb. > > I am pretty sure that is what the current stack does, and regardless > it is certainly what I intended it to do all those years ago when I > wrote this code. :-) > > The only case where I can see this patch helping is when we have to > retransmit multi-mss chunks. And yes indeed, it might be a useful > optimization to TSO those frames rather than sending them one MSS at a > time.
Yeah, it looks like I got the changelog wrong. We definitely see these 1-MSS splits during retransmits all the time, and we had to change the sch_fq flow_limit from 100 to 1000 packets to cope with that. (TCP Small Queues does not guard TCP from sending hundred of rtx at the same time)