• Eric Dumazet's avatar
    tcp: mitigate scheduling jitter in EDT pacing model · a7a25630
    Eric Dumazet authored
    In commit fefa569a ("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: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a7a25630
tcp_output.c 108 KB