• Eric Dumazet's avatar
    tcp_cubic: switch bictcp_clock() to usec resolution · cff04e2d
    Eric Dumazet authored
    Current 1ms clock feeds ca->round_start, ca->delay_min,
    ca->last_ack.
    
    This is quite problematic for data-center flows, where delay_min
    is way below 1 ms.
    
    This means Hystart Train detection triggers every time jiffies value
    is updated, since "((s32)(now - ca->round_start) > ca->delay_min >> 4)"
    expression becomes true.
    
    This kind of random behavior can be solved by reusing the existing
    usec timestamp that TCP keeps in tp->tcp_mstamp
    
    Note that a followup patch will tweak things a bit, because
    during slow start, GRO aggregation on receivers naturally
    increases the RTT as TSO packets gradually come to ~64KB size.
    
    To recap, right after this patch CUBIC Hystart train detection
    is more aggressive, since short RTT flows might exit slow start at
    cwnd = 20, instead of being possibly unbounded.
    
    Following patch will address this problem.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cff04e2d
tcp_cubic.c 14.3 KB