From: Yuchung Cheng <ych...@google.com> Date: Fri, 28 Sep 2018 13:09:02 -0700
> Previously TCP initial receive buffer is ~87KB by default and > the initial receive window is ~29KB (20 MSS). This patch changes > the two numbers to 128KB and ~64KB (rounding down to the multiples > of MSS) respectively. The patch also simplifies the calculations s.t. > the two numbers are directly controlled by sysctl tcp_rmem[1]: > > 1) Initial receiver buffer budget (sk_rcvbuf): while this should > be configured via sysctl tcp_rmem[1], previously tcp_fixup_rcvbuf() > always override and set a larger size when a new connection > establishes. > > 2) Initial receive window in SYN: previously it is set to 20 > packets if MSS <= 1460. The number 20 was based on the initial > congestion window of 10: the receiver needs twice amount to > avoid being limited by the receive window upon out-of-order > delivery in the first window burst. But since this only > applies if the receiving MSS <= 1460, connection using large MTU > (e.g. to utilize receiver zero-copy) may be limited by the > receive window. > > This patch also lowers the initial bytes expected to receive in > the receiver buffer autotuning algorithm - otherwise the receiver > may take two to three rounds to increase the buffer to the > appropriate level (2x sender congestion window). > > With this patch TCP memory configuration is more straight-forward and > more properly sized to modern high-speed networks by default. Several > popular stacks have been announcing 64KB rwin in SYNs as well. > > Signed-off-by: Yuchung Cheng <ych...@google.com> > Signed-off-by: Wei Wang <wei...@google.com> > Signed-off-by: Neal Cardwell <ncardw...@google.com> > Signed-off-by: Eric Dumazet <eduma...@google.com> > Reviewed-by: Soheil Hassas Yeganeh <soh...@google.com> Applied, thanks.