]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: mitigate scheduling jitter in EDT pacing model
authorEric Dumazet <edumazet@google.com>
Mon, 15 Oct 2018 16:37:54 +0000 (09:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Oct 2018 05:56:42 +0000 (22:56 -0700)
commitb0e7a05193bd0bdd59de6eb29c2b5fa35f4d8736
tree08c2706535d382c6b7d07e19698f8e55fee371be
parent98e0f0d66a15aaf8e50413a2052c60516cd02f50
tcp: mitigate scheduling jitter in EDT pacing model

In commit ee8d361c72f1 ("net_sched: sch_fq: account for schedule/timers
drifts") we added a mitigation for scheduling jitter in fq packet scheduler.

This patch does the same in TCP stack, now it is using EDT model.

Note that this mitigation is valid for both external (fq packet scheduler)
or internal TCP pacing.

This uses the same strategy than the above commit, allowing
a time credit of half the packet currently sent.

Consider following case :

An skb is sent, after an idle period of 300 usec.
The air-time (skb->len/pacing_rate) is 500 usec
Instead of setting the pacing timer to now+500 usec,
it will use now+min(500/2, 300) -> now+250usec

This is like having a token bucket with a depth of half
an skb.

Tested:

tc qdisc replace dev eth0 root pfifo_fast

Before
netperf -P0 -H remote -- -q 1000000000 # 8000Mbit
540000 262144 262144    10.00    7710.43

After :
netperf -P0 -H remote -- -q 1000000000 # 8000 Mbit
540000 262144 262144    10.00    7999.75   # Much closer to 8000Mbit target

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c