* [Codel] [PATCH 0/2] net-next codel enhancements @ 2013-10-22 1:19 Dave Taht 2013-10-22 1:19 ` [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around Dave Taht 2013-10-22 1:19 ` [Codel] [PATCH 2/2] codel: eliminate maxpacket as an inner bound Dave Taht 0 siblings, 2 replies; 5+ messages in thread From: Dave Taht @ 2013-10-22 1:19 UTC (permalink / raw) To: netdev, codel These two patches have been extensively tested in openwrt and cerowrt. Losing the fq_codel drop statistic as a bug. Checking for a maxpacket size in the qdisc was somewhat correct for ns2 but not for Linux as all the current subsystems below htb/hfsc/adsl/bql buffer packets. IMHO both of these patches are candidates for stable. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around 2013-10-22 1:19 [Codel] [PATCH 0/2] net-next codel enhancements Dave Taht @ 2013-10-22 1:19 ` Dave Taht 2013-10-22 1:27 ` Eric Dumazet 2013-10-22 1:19 ` [Codel] [PATCH 2/2] codel: eliminate maxpacket as an inner bound Dave Taht 1 sibling, 1 reply; 5+ messages in thread From: Dave Taht @ 2013-10-22 1:19 UTC (permalink / raw) To: netdev, codel; +Cc: Dave Taht Having more accurate dropped information in this qdisc is useful. Signed-off-by: Dave Taht <dave.taht@bufferbloat.net> --- net/sched/sch_fq_codel.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c index 5578628..437bc95 100644 --- a/net/sched/sch_fq_codel.c +++ b/net/sched/sch_fq_codel.c @@ -193,7 +193,6 @@ static int fq_codel_enqueue(struct sk_buff *skb, struct Qdisc *sch) list_add_tail(&flow->flowchain, &q->new_flows); q->new_flow_count++; flow->deficit = q->quantum; - flow->dropped = 0; } if (++sch->q.qlen <= sch->limit) return NET_XMIT_SUCCESS; -- 1.7.9.5 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around 2013-10-22 1:19 ` [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around Dave Taht @ 2013-10-22 1:27 ` Eric Dumazet 2013-10-22 1:43 ` Dave Taht 0 siblings, 1 reply; 5+ messages in thread From: Eric Dumazet @ 2013-10-22 1:27 UTC (permalink / raw) To: Dave Taht; +Cc: netdev, codel [-- Attachment #1: Type: text/plain, Size: 1031 bytes --] On Oct 21, 2013 6:20 PM, "Dave Taht" <dave.taht@bufferbloat.net> wrote: > > Having more accurate dropped information in this qdisc is useful. > > Signed-off-by: Dave Taht <dave.taht@bufferbloat.net> > --- > net/sched/sch_fq_codel.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c > index 5578628..437bc95 100644 > --- a/net/sched/sch_fq_codel.c > +++ b/net/sched/sch_fq_codel.c > @@ -193,7 +193,6 @@ static int fq_codel_enqueue(struct sk_buff *skb, struct Qdisc *sch) > list_add_tail(&flow->flowchain, &q->new_flows); > q->new_flow_count++; > flow->deficit = q->quantum; > - flow->dropped = 0; > } > if (++sch->q.qlen <= sch->limit) > return NET_XMIT_SUCCESS; > -- > 1.7.9.5 I am travelling to Edinburgh, so will be short. Since fqcodel recycles a slot, we need to clear this counter. We do no know if slot is reused by previous flow or a new flow hashing to same bucket. [-- Attachment #2: Type: text/html, Size: 1411 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around 2013-10-22 1:27 ` Eric Dumazet @ 2013-10-22 1:43 ` Dave Taht 0 siblings, 0 replies; 5+ messages in thread From: Dave Taht @ 2013-10-22 1:43 UTC (permalink / raw) To: Eric Dumazet; +Cc: netdev, codel On Mon, Oct 21, 2013 at 06:27:11PM -0700, Eric Dumazet wrote: > On Oct 21, 2013 6:20 PM, "Dave Taht" <dave.taht@bufferbloat.net> wrote: > > > > Having more accurate dropped information in this qdisc is useful. > > > > Signed-off-by: Dave Taht <dave.taht@bufferbloat.net> > > --- > > net/sched/sch_fq_codel.c | 1 - > > 1 file changed, 1 deletion(-) > > > > diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c > > index 5578628..437bc95 100644 > > --- a/net/sched/sch_fq_codel.c > > +++ b/net/sched/sch_fq_codel.c > > @@ -193,7 +193,6 @@ static int fq_codel_enqueue(struct sk_buff *skb, > struct Qdisc *sch) > > list_add_tail(&flow->flowchain, &q->new_flows); > > q->new_flow_count++; > > flow->deficit = q->quantum; > > - flow->dropped = 0; > > } > > if (++sch->q.qlen <= sch->limit) > > return NET_XMIT_SUCCESS; > > -- > > 1.7.9.5 > I am travelling to Edinburgh, so will be short. Wish I could have made it. > Since fqcodel recycles a slot, we need to clear this counter. I prefer to think of it as a per "slot dropped counter" and to have it retain the total number of drops in that slot since qdisc initialization. > We do no know > if slot is reused by previous flow or a new flow hashing to same bucket. There could also in this case be several flows hashing to the same bucket and dropping packets. In most cases with the current zero-ing of "drop", polling "tc -s class" yields an unrevealing drop statistic of "0" for many workloads against multiple streams at lower bandwidths. with it not getting zeroed, as per this patch, clear patterns show over many seconds as queues empty, get filled by bursts, and get drops. This patch has been in openwrt and cerowrt since feburary. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Codel] [PATCH 2/2] codel: eliminate maxpacket as an inner bound 2013-10-22 1:19 [Codel] [PATCH 0/2] net-next codel enhancements Dave Taht 2013-10-22 1:19 ` [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around Dave Taht @ 2013-10-22 1:19 ` Dave Taht 1 sibling, 0 replies; 5+ messages in thread From: Dave Taht @ 2013-10-22 1:19 UTC (permalink / raw) To: netdev, codel; +Cc: Dave Taht As there is always at least one packet in the device driver or rate limiter, the maxpacket bound (an artifact of the ns2 code) is unneeded. Also: in the case of TSO/GSO/GRO, it can scale well above (to 64k) what codel's designers intended. Someday the maxpacket variable could be eliminated entirely, but for now it is a useful indicator of "oops, I didn't turn off tso/gso/gro somewhere". Signed-off-by: Dave Taht <dave.taht@bufferbloat.net> --- include/net/codel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/codel.h b/include/net/codel.h index 389cf62..319a296 100644 --- a/include/net/codel.h +++ b/include/net/codel.h @@ -225,7 +225,7 @@ static bool codel_should_drop(const struct sk_buff *skb, stats->maxpacket = qdisc_pkt_len(skb); if (codel_time_before(vars->ldelay, params->target) || - sch->qstats.backlog <= stats->maxpacket) { + sch->qstats.backlog <= 0) { /* went below - stay below for at least interval */ vars->first_above_time = 0; return false; -- 1.7.9.5 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-10-22 1:43 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-10-22 1:19 [Codel] [PATCH 0/2] net-next codel enhancements Dave Taht 2013-10-22 1:19 ` [Codel] [PATCH 1/2] fq_codel: keep dropped statistic around Dave Taht 2013-10-22 1:27 ` Eric Dumazet 2013-10-22 1:43 ` Dave Taht 2013-10-22 1:19 ` [Codel] [PATCH 2/2] codel: eliminate maxpacket as an inner bound Dave Taht
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox