Skip to contentSkip to conversation

cbq: incorrectly low bandwidth blocks limited traffic

PATCH Superseded Vasily Averin 2 participants 2 messages Aug 14, 2014 – Aug 19, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover cbq: incorrectly low bandwidth blocks limited traffic

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->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.

maintainer
#1 lore raw

From: 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->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.

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.html

Following patches should fix the problem.

Series applied, thanks.