cbq: incorrectly low bandwidth blocks limited traffic
Subsystems (2)
v2 cover cbq: incorrectly low bandwidth blocks limited traffic
v2: patch description changes
Mainstream commit f0f6ee1f70c4 ("cbq: incorrect processing of high limits") have side effect: if cbq bandwidth setting is less than real interface throughput non-limited traffic can delay limited traffic for a very long time.
This happen because of q->now changes incorrectly in cbq_dequeue():
in described scenario L2T is much greater than real time delay, and q->now gets an extra boost for each transmitted packet.
Accumulated boost prevents update q->now, and blocked class can wait very long time until (q->now >= cl->undertime) will be true again.
More detailed problem description can be found here:
http://www.spinics.net/lists/netdev/msg292493.html
Following patches should fix the problem.
Vasily Averin (2):
cbq: incorrectly low bandwidth setting blocks limited traffic
cbq: now_rt removal
net/sched/sch_cbq.c | 48 ++++++++++++++---------------------------------- 1 files changed, 14 insertions(+), 34 deletions(-)
My testing confirmed that it fixes the problem and did not discover any side-effects.
David Miller
maintainerFrom: Vasily Averin <[email protected]>
Date: Thu, 14 Aug 2014 12:27:29 +0400
Quoted 11 lines
v2: patch description changes
Fixes f0f6ee1f70c4 ("cbq: incorrect processing of high limits")Mainstream commit
f0f6ee1f70c4("cbq: incorrect processing of high limits") have side effect: if cbq bandwidth setting is less than real interface throughput non-limited traffic can delay limited traffic for a very long time.This happen because of
q->nowchanges incorrectly incbq_dequeue():
in described scenario L2T is much greater than real time delay, andq->nowgets an extra boost for each transmitted packet.
Quoted 7 lines
Accumulated boost prevents update
q->now, and blocked class can wait very long time until (q->now>=cl->undertime) will be true again.More detailed problem description can be found here:
http://www.spinics.net/lists/netdev/msg292493.htmlFollowing patches should fix the problem.
Series applied, thanks.