Eric Dumazet
114f39feab
tcp: restore autocorking
...
When adding rb-tree for TCP retransmit queue, we inadvertently broke
TCP autocorking.
tcp_should_autocork() should really check if the rtx queue is not empty.
Tested:
Before the fix :
$ nstat -n;./netperf -H 10.246.7.152 -Cc -- -m 500;nstat | grep AutoCork
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.246.7.152 () port 0 AF_INET
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB
540000 262144 500 10.00 2682.85 2.47 1.59 3.618 2.329
TcpExtTCPAutoCorking 33 0.0
// Same test, but forcing TCP_NODELAY
$ nstat -n;./netperf -H 10.246.7.152 -Cc -- -D -m 500;nstat | grep AutoCork
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.246.7.152 () port 0 AF_INET : nodelay
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB
540000 262144 500 10.00 1408.75 2.44 2.96 6.802 8.259
TcpExtTCPAutoCorking 1 0.0
After the fix :
$ nstat -n;./netperf -H 10.246.7.152 -Cc -- -m 500;nstat | grep AutoCork
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.246.7.152 () port 0 AF_INET
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB
540000 262144 500 10.00 5472.46 2.45 1.43 1.761 1.027
TcpExtTCPAutoCorking 361293 0.0
// With TCP_NODELAY option
$ nstat -n;./netperf -H 10.246.7.152 -Cc -- -D -m 500;nstat | grep AutoCork
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.246.7.152 () port 0 AF_INET : nodelay
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB
540000 262144 500 10.00 5454.96 2.46 1.63 1.775 1.174
TcpExtTCPAutoCorking 315448 0.0
Fixes: 75c119afe14f ("tcp: implement rb-tree based retransmit queue")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Michael Wenig <mwenig@vmware.com>
Tested-by: Michael Wenig <mwenig@vmware.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Michael Wenig <mwenig@vmware.com>
Tested-by: Michael Wenig <mwenig@vmware.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-05-03 11:28:50 -04:00
..
2018-04-07 19:04:02 +09:00
2018-03-31 23:33:04 -04:00
2017-11-03 22:11:17 +08:00
2018-04-05 22:05:03 -04:00
2017-10-21 01:33:19 +01:00
2018-03-27 13:18:09 -04:00
2018-02-27 10:46:01 +01:00
2018-02-13 13:59:03 +01:00
2018-03-27 13:18:09 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-28 22:44:44 -05:00
2018-04-01 20:57:39 -04:00
2018-03-29 14:10:30 -04:00
2018-03-27 13:18:09 -04:00
2017-10-08 10:12:15 -07:00
2018-03-27 13:18:09 -04:00
2018-03-27 13:18:09 -04:00
2018-02-02 19:49:31 -05:00
2018-03-12 11:03:42 -04:00
2018-03-31 23:25:39 -04:00
2018-02-01 09:48:42 -05:00
2018-04-07 22:32:32 -04:00
2018-04-09 10:57:35 -04:00
2018-03-04 17:49:17 -05:00
2018-04-04 12:04:59 -04:00
2018-04-10 11:03:32 -04:00
2018-03-22 15:12:56 -04:00
2017-11-02 11:10:55 +01:00
2018-04-16 12:57:06 -04:00
2018-03-22 15:12:56 -04:00
2017-06-25 11:42:01 -04:00
2018-04-05 15:16:15 -04:00
2018-03-27 13:18:09 -04:00
2018-03-26 12:07:48 -04:00
2018-03-27 13:18:09 -04:00
2018-03-26 13:14:43 -04:00
2018-03-27 13:18:09 -04:00
2018-03-01 13:13:23 -05:00
2018-03-01 13:13:23 -05:00
2018-01-08 18:11:02 +01:00
2018-03-27 13:18:09 -04:00
2018-03-31 23:25:39 -04:00
2017-03-24 13:17:07 -07:00
2017-08-07 11:39:22 -07:00
2018-03-27 13:18:09 -04:00
2018-05-02 22:52:35 -04:00
2018-03-25 20:53:54 -04:00
2018-03-27 13:18:09 -04:00
2018-05-02 11:12:32 -04:00
2017-08-06 21:25:10 -07:00
2017-10-16 21:24:25 +01:00
2017-11-15 14:09:52 +09:00
2017-08-06 21:25:10 -07:00
2016-12-06 11:34:24 -05:00
2017-12-20 14:00:25 -05:00
2017-12-13 15:51:12 -05:00
2017-08-06 21:25:10 -07:00
2017-08-06 21:25:10 -07:00
2016-11-21 13:20:17 -05:00
2018-02-28 12:03:47 -05:00
2018-04-23 09:51:06 -04:00
2018-03-31 23:33:04 -04:00
2017-05-17 16:06:01 -04:00
2018-03-27 13:18:09 -04:00
2018-03-31 23:37:32 -04:00
2018-01-31 10:26:30 -05:00
2018-01-22 16:01:30 -05:00
2018-03-01 21:44:28 -05:00
2017-12-08 10:07:02 -05:00
2017-12-08 14:14:11 -05:00
2017-08-06 21:25:10 -07:00
2018-03-07 15:01:03 -05:00
2018-02-06 11:39:31 +01:00
2017-09-29 06:07:00 +01:00
2017-11-02 11:10:55 +01:00
2017-08-06 21:25:10 -07:00
2017-08-30 11:20:08 -07:00
2017-08-06 21:25:10 -07:00
2018-05-03 11:28:50 -04:00
2018-02-28 11:43:28 -05:00
2017-08-07 11:39:22 -07:00
2017-11-02 11:10:55 +01:00
2018-01-22 16:01:30 -05:00
2017-07-24 13:52:59 -07:00
2018-03-31 23:33:04 -04:00
2018-03-27 13:18:09 -04:00
2017-12-19 08:23:21 +01:00
2017-06-16 11:48:39 -04:00
2017-04-14 10:07:39 +02:00
2018-03-07 10:54:29 +01:00
2018-03-04 17:49:17 -05:00
2018-03-27 13:18:09 -04:00
2017-02-09 10:22:17 +01:00
2017-11-02 11:10:55 +01:00