tcp: add tcp_comp_sack_nr sysctl
This per netns sysctl allows for TCP SACK compression fine-tuning. This limits number of SACK that can be compressed. Using 0 disables SACK compression. Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6d82aa2420
commit
9c21d2fc41
5 changed files with 20 additions and 1 deletions
|
@ -532,6 +532,12 @@ tcp_comp_sack_delay_ns - LONG INTEGER
|
||||||
|
|
||||||
Default : 1,000,000 ns (1 ms)
|
Default : 1,000,000 ns (1 ms)
|
||||||
|
|
||||||
|
tcp_comp_sack_nr - INTEGER
|
||||||
|
Max numer of SACK that can be compressed.
|
||||||
|
Using 0 disables SACK compression.
|
||||||
|
|
||||||
|
Detault : 44
|
||||||
|
|
||||||
tcp_slow_start_after_idle - BOOLEAN
|
tcp_slow_start_after_idle - BOOLEAN
|
||||||
If set, provide RFC2861 behavior and time out the congestion
|
If set, provide RFC2861 behavior and time out the congestion
|
||||||
window after an idle period. An idle period is defined at
|
window after an idle period. An idle period is defined at
|
||||||
|
|
|
@ -160,6 +160,7 @@ struct netns_ipv4 {
|
||||||
int sysctl_tcp_pacing_ca_ratio;
|
int sysctl_tcp_pacing_ca_ratio;
|
||||||
int sysctl_tcp_wmem[3];
|
int sysctl_tcp_wmem[3];
|
||||||
int sysctl_tcp_rmem[3];
|
int sysctl_tcp_rmem[3];
|
||||||
|
int sysctl_tcp_comp_sack_nr;
|
||||||
unsigned long sysctl_tcp_comp_sack_delay_ns;
|
unsigned long sysctl_tcp_comp_sack_delay_ns;
|
||||||
struct inet_timewait_death_row tcp_death_row;
|
struct inet_timewait_death_row tcp_death_row;
|
||||||
int sysctl_max_syn_backlog;
|
int sysctl_max_syn_backlog;
|
||||||
|
|
|
@ -46,6 +46,7 @@ static int tcp_syn_retries_min = 1;
|
||||||
static int tcp_syn_retries_max = MAX_TCP_SYNCNT;
|
static int tcp_syn_retries_max = MAX_TCP_SYNCNT;
|
||||||
static int ip_ping_group_range_min[] = { 0, 0 };
|
static int ip_ping_group_range_min[] = { 0, 0 };
|
||||||
static int ip_ping_group_range_max[] = { GID_T_MAX, GID_T_MAX };
|
static int ip_ping_group_range_max[] = { GID_T_MAX, GID_T_MAX };
|
||||||
|
static int comp_sack_nr_max = 255;
|
||||||
|
|
||||||
/* obsolete */
|
/* obsolete */
|
||||||
static int sysctl_tcp_low_latency __read_mostly;
|
static int sysctl_tcp_low_latency __read_mostly;
|
||||||
|
@ -1158,6 +1159,15 @@ static struct ctl_table ipv4_net_table[] = {
|
||||||
.mode = 0644,
|
.mode = 0644,
|
||||||
.proc_handler = proc_doulongvec_minmax,
|
.proc_handler = proc_doulongvec_minmax,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.procname = "tcp_comp_sack_nr",
|
||||||
|
.data = &init_net.ipv4.sysctl_tcp_comp_sack_nr,
|
||||||
|
.maxlen = sizeof(int),
|
||||||
|
.mode = 0644,
|
||||||
|
.proc_handler = proc_dointvec_minmax,
|
||||||
|
.extra1 = &zero,
|
||||||
|
.extra2 = &comp_sack_nr_max,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.procname = "udp_rmem_min",
|
.procname = "udp_rmem_min",
|
||||||
.data = &init_net.ipv4.sysctl_udp_rmem_min,
|
.data = &init_net.ipv4.sysctl_udp_rmem_min,
|
||||||
|
|
|
@ -5106,7 +5106,8 @@ send_now:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tcp_is_sack(tp) || tp->compressed_ack >= 44)
|
if (!tcp_is_sack(tp) ||
|
||||||
|
tp->compressed_ack >= sock_net(sk)->ipv4.sysctl_tcp_comp_sack_nr)
|
||||||
goto send_now;
|
goto send_now;
|
||||||
tp->compressed_ack++;
|
tp->compressed_ack++;
|
||||||
|
|
||||||
|
|
|
@ -2573,6 +2573,7 @@ static int __net_init tcp_sk_init(struct net *net)
|
||||||
sizeof(init_net.ipv4.sysctl_tcp_wmem));
|
sizeof(init_net.ipv4.sysctl_tcp_wmem));
|
||||||
}
|
}
|
||||||
net->ipv4.sysctl_tcp_comp_sack_delay_ns = NSEC_PER_MSEC;
|
net->ipv4.sysctl_tcp_comp_sack_delay_ns = NSEC_PER_MSEC;
|
||||||
|
net->ipv4.sysctl_tcp_comp_sack_nr = 44;
|
||||||
net->ipv4.sysctl_tcp_fastopen = TFO_CLIENT_ENABLE;
|
net->ipv4.sysctl_tcp_fastopen = TFO_CLIENT_ENABLE;
|
||||||
spin_lock_init(&net->ipv4.tcp_fastopen_ctx_lock);
|
spin_lock_init(&net->ipv4.tcp_fastopen_ctx_lock);
|
||||||
net->ipv4.sysctl_tcp_fastopen_blackhole_timeout = 60 * 60;
|
net->ipv4.sysctl_tcp_fastopen_blackhole_timeout = 60 * 60;
|
||||||
|
|
Loading…
Add table
Reference in a new issue