Re: Re: Re: Re: limited network bandwidth with 3.2.x kernels

Eric Dumazet
2012-02-16T22:35:51Z

Le vendredi 17 février 2012 à 00:08 +0200, alekcejk@googlemail.com a
écrit :
> В сообщении от Четверг 16 февраля 2012 22:59:33 вы написали:
> > Le jeudi 16 février 2012 à 23:49 +0200, alekcejk@googlemail.com a
> >
> > écrit :
> > > В сообщении от Четверг 16 февраля 2012 13:19:58 вы написали:
> > > > On Thu, Feb 16, 2012 at 12:54 PM, <alekcejk@googlemail.com> wrote:
> > > > I still think it would be useful to have these three pieces of data
> > > > for a slow/3.2.x transfer (from a geographically distant server) if
> > > > you have a sec:
> > > >
> > > > - tcpdump of first 300 or so packets to see SYN/SYNACK options and RTT
> > > >
> > > >
> > > > - summary of overall throughput wget sees on that transfer
> > >
> > > --2012-02-16 23:33:30-- http://speedtest.tele2.net/1GB.zip
> > > 100%[===========================>] 1 073 741 824 5,02M/s in 3m 29s
> > > 2012-02-16 23:36:59 (4,90 MB/s) - «/dev/null» saved [1073741824/1073741824]
> > >
> > > > This should help establish whether the receiver window is really the
> > > > limiting factor in the slow cases.
> >
> > Is tweaking /proc/sys/net/ipv4/tcp_adv_win_scale changes the numbers ?
>
> Yes.
>
> > try 1, -1 or -2
>
> With 1 and -1 maximum speed increased to 6,99 M/s, with -2 decreased to 3,3 M/s.
>

Thats indeed the problem.

An incoming skb is considered as "good citizen" in term of memory usage
if its truesize is no more than
len + len/4 (if adv_win_scale == 2)

That was true when truesize was 1500+NET_SKB_PAD+sizeof(sk_buff),
but not true anymore when truesize is 2048+sizeof(sk_buff), or even more
when its 4096+sizeof(sk_buff)

So receiver doesnt increase rcv_ssthresh and cannot open its window.

tcp_grow_window() should be tweaked to :

1) Relax the requirements
2) Allow bigger increase in case of super packets (LRO/GRO)