tcp: refine pacing rate determination
authorEric Dumazet <edumazet@google.com>
Sat, 22 Aug 2015 00:38:02 +0000 (17:38 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Aug 2015 18:33:54 +0000 (11:33 -0700)
commit43e122b014c955a33220fabbd09c4b5e4f422c3c
treea5accf2276666812aed04749e3b6f44505a5cbab
parent4ec3b28c2763e11a423d03810ff0be65f02e635e
tcp: refine pacing rate determination

When TCP pacing was added back in linux-3.12, we chose
to apply a fixed ratio of 200 % against current rate,
to allow probing for optimal throughput even during
slow start phase, where cwnd can be doubled every other gRTT.

At Google, we found it was better applying a different ratio
while in Congestion Avoidance phase.
This ratio was set to 120 %.

We've used the normal tcp_in_slow_start() helper for a while,
then tuned the condition to select the conservative ratio
as soon as cwnd >= ssthresh/2 :

- After cwnd reduction, it is safer to ramp up more slowly,
  as we approach optimal cwnd.
- Initial ramp up (ssthresh == INFINITY) still allows doubling
  cwnd every other RTT.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/ip-sysctl.txt
include/net/tcp.h
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp_input.c