• Vasily Averin's avatar
    cbq: incorrect processing of high limits · f0f6ee1f
    Vasily Averin authored
    currently cbq works incorrectly for limits > 10% real link bandwidth,
    and practically does not work for limits > 50% real link bandwidth.
    Below are results of experiments taken on 1 Gbit link
    
     In shaper | Actual Result
    -----------+---------------
      100M     | 108 Mbps
      200M     | 244 Mbps
      300M     | 412 Mbps
      500M     | 893 Mbps
    
    This happen because of q->now changes incorrectly in cbq_dequeue():
    when it is called before real end of packet transmitting,
    L2T is greater than real time delay, q_now gets an extra boost
    but never compensate it.
    
    To fix this problem we prevent change of q->now until its synchronization
    with real time.
    Signed-off-by: default avatarVasily Averin <vvs@openvz.org>
    Reviewed-by: default avatarAlexey Kuznetsov <kuznet@ms2.inr.ac.ru>
    Acked-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f0f6ee1f
sch_cbq.c 47.6 KB