From: Dave Taht <dave.taht@gmail.com>
To: Sebastian Moeller <moeller0@gmx.de>
Cc: "cerowrt-devel@lists.bufferbloat.net"
<cerowrt-devel@lists.bufferbloat.net>
Subject: Re: [Cerowrt-devel] performance numbers from WRT1200AC (Re: Latest build test - new sqm-scripts seem to work; "cake overhead 40" didn't)
Date: Mon, 29 Jun 2015 09:44:31 -0700 [thread overview]
Message-ID: <CAA93jw72jtxuj5jWWSL=QRY19zvNZB2tb7coOQCg+K03r4e1Cg@mail.gmail.com> (raw)
In-Reply-To: <92199704-0522-447A-887A-1EE0E6AE4421@gmx.de>
[-- Attachment #1: Type: text/plain, Size: 2399 bytes --]
On Mon, Jun 29, 2015 at 6:42 AM, Sebastian Moeller <moeller0@gmx.de> wrote:
> HI Mikael,, hi Jonathan,
>
>> [...]
>>
>> These are the results from 50M and 500M, also including 50up and 50down that I added to my test suite script.
>>
>> http://swm.pp.se/aqm/rrul_150629-cake-4.tar
>>
>
> Now both ingress and egress are up to roughly 455Mbps from roughly 360 with cake just playing leaf qdisc for HTB. This looks even better than before…
350 *usec* induced delay on the 50mbit rrul_be test. w00t!
Most of the tests compare well with the reference rangeley data now. I
would like a 900mbit soft shaped result.
1.2ms at 500mbit. Less of a w00t. Possible it is coming from elsewhere
on that path (fq or fq_codel on the server and client?)
cake currently peels at 1ms / flows (more or less)... NAPI is an
issue... hw mq an issue...
There are a half dozen things in the mvneta driver I would try to
reduce it's latency more. The easy ones:
reduce this to 16:
netif_napi_add(dev, &pp->napi, mvneta_poll, NAPI_POLL_WEIGHT);
Reduce this to 24: (this will also reduce the max outstanding stuff in
the driver by a LOT, but is still not BQL!)
/* Max number of allowed TCP segments for software TSO */
#define MVNETA_MAX_TSO_SEGS 100
Both of the will improve read side latency at the cost of more sirqs.
I do not know what reducing these will do, and would test both of the
above separately.
/* Coalescing */
#define MVNETA_TXDONE_COAL_PKTS 1
#define MVNETA_RX_COAL_PKTS 32
#define MVNETA_RX_COAL_USEC 100
As for cake itself, eric dumazet told us we dont need atomic ops in it,
and peeling at at even lower threshold has some appeal (to me, anyway)
attached is a patch for that, put it in your feeds/cero/kmod_sched_cake/patches
directory, rebuild (make package/kmod-sched-cake/{clean,compile,install})
(bump up the makefile rel number also, if you want)
> Best Regards
> Sebastian
> _______________________________________________
> Cerowrt-devel mailing list
> Cerowrt-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel
--
Dave Täht
worldwide bufferbloat report:
http://www.dslreports.com/speedtest/results/bufferbloat
And:
What will it take to vastly improve wifi for everyone?
https://plus.google.com/u/0/explore/makewififast
[-- Attachment #2: 0001-Rid-unneeded-atomic-ops-and-reduce-peeling-threshold.patch --]
[-- Type: text/x-patch, Size: 2510 bytes --]
From 46be609e95474e9db856b5e12756d4a7568adf42 Mon Sep 17 00:00:00 2001
From: Dave Taht <dave.taht@bufferbloat.net>
Date: Mon, 29 Jun 2015 09:38:00 -0700
Subject: [PATCH] Rid unneeded atomic ops and reduce peeling threshold
---
sch_cake.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/sch_cake.c b/sch_cake.c
index 80e1cb2..9a358b9 100644
--- a/sch_cake.c
+++ b/sch_cake.c
@@ -121,7 +121,7 @@ struct cake_fqcd_sched_data {
struct codel_params cparams;
u32 drop_overlimit;
- atomic_t flow_count;
+ u32 flow_count;
struct list_head new_flows; /* list of new flows */
struct list_head old_flows; /* list of old flows */
@@ -427,7 +427,7 @@ static int cake_enqueue(struct sk_buff *skb, struct Qdisc *sch)
* Split GSO aggregates if they're likely to impair flow isolation
* or if we need to know individual packet sizes for framing overhead.
*/
- if(unlikely((len * max(atomic_read(&fqcd->flow_count), 1)) > q->peel_threshold && skb_is_gso(skb)))
+ if(unlikely((len * max(&fqcd->flow_count, 1)) > q->peel_threshold && skb_is_gso(skb)))
{
struct sk_buff *segs, *nskb;
netdev_features_t features = netif_skb_features(skb);
@@ -477,7 +477,7 @@ static int cake_enqueue(struct sk_buff *skb, struct Qdisc *sch)
/* flowchain */
if(list_empty(&flow->flowchain)) {
list_add_tail(&flow->flowchain, &fqcd->new_flows);
- atomic_inc(&fqcd->flow_count);
+ fqcd->flow_count+=1;
flow->deficit = fqcd->quantum;
flow->dropped = 0;
}
@@ -615,7 +615,7 @@ retry:
list_move_tail(&flow->flowchain, &fqcd->old_flows);
} else {
list_del_init(&flow->flowchain);
- atomic_dec(&fqcd->flow_count);
+ fqcd->flow_count-=1;
}
goto begin;
}
@@ -966,7 +966,7 @@ static void cake_reconfigure(struct Qdisc *sch)
if(q->buffer_limit < 65536)
q->buffer_limit = 65536;
- q->peel_threshold = (q->rate_flags & CAKE_FLAG_ATM) ? 0 : min(65535U, q->rate_bps >> 10);
+ q->peel_threshold = (q->rate_flags & CAKE_FLAG_ATM) ? 0 : min(65535U, q->rate_bps >> 12);
} else {
q->buffer_limit = 1 << 20;
q->peel_threshold = 0;
@@ -1083,7 +1083,7 @@ static int cake_init(struct Qdisc *sch, struct nlattr *opt)
fqcd->perturbation = prandom_u32();
INIT_LIST_HEAD(&fqcd->new_flows);
INIT_LIST_HEAD(&fqcd->old_flows);
- atomic_set(&fqcd->flow_count, 0);
+ fqcd->flow_count = 0;
/* codel_params_init(&fqcd->cparams); */
fqcd->flows = cake_zalloc(fqcd->flows_cnt * sizeof(struct cake_fqcd_flow));
--
1.9.1
next prev parent reply other threads:[~2015-06-29 16:44 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-19 14:44 [Cerowrt-devel] Latest build test - new sqm-scripts seem to work; "cake overhead 40" didn't Alan Jenkins
2015-06-19 16:41 ` Sebastian Moeller
2015-06-19 17:35 ` Alan Jenkins
2015-06-19 20:12 ` Dave Taht
2015-06-19 20:40 ` Alan Jenkins
2015-06-19 20:51 ` Dave Taht
2015-06-19 20:57 ` Dave Taht
2015-06-19 20:57 ` Alan Jenkins
2015-06-19 21:06 ` Dave Taht
2015-06-19 21:24 ` Dave Taht
2015-06-19 21:52 ` Luis E. Garcia
2015-06-19 23:32 ` Dave Taht
2015-06-20 5:52 ` Sebastian Moeller
2015-06-23 2:41 ` Jim Reisert AD1C
2015-06-23 7:20 ` Sebastian Moeller
2015-06-23 12:55 ` [Cerowrt-devel] performance numbers from WRT1200AC (Re: Latest build test - new sqm-scripts seem to work; "cake overhead 40" didn't) Mikael Abrahamsson
2015-06-23 14:09 ` Dave Taht
2015-06-23 17:25 ` Sebastian Moeller
2015-06-23 18:15 ` Jonathan Morton
2015-06-24 5:21 ` Mikael Abrahamsson
2015-06-24 5:19 ` Mikael Abrahamsson
2015-06-24 11:31 ` Mikael Abrahamsson
2015-06-24 16:32 ` Dave Taht
2015-06-25 1:53 ` Aaron Wood
2015-06-25 3:07 ` Mikael Abrahamsson
2015-06-25 3:32 ` Aaron Wood
2015-06-25 9:12 ` Mikael Abrahamsson
2015-06-25 10:26 ` Mikael Abrahamsson
2015-06-25 20:13 ` Dave Taht
2015-06-25 20:16 ` Dave Taht
2015-06-25 20:24 ` Toke Høiland-Jørgensen
2015-06-25 22:14 ` Dave Taht
2015-06-26 6:58 ` Mikael Abrahamsson
2015-06-26 7:12 ` Mikael Abrahamsson
2015-06-26 9:46 ` Sebastian Moeller
2015-06-26 12:26 ` Mikael Abrahamsson
2015-06-26 14:17 ` Sebastian Moeller
2015-06-26 14:49 ` Mikael Abrahamsson
2015-06-26 16:18 ` Jonathan Morton
2015-06-26 16:31 ` Mikael Abrahamsson
2015-06-26 16:35 ` Jonathan Morton
2015-06-26 17:04 ` Dave Taht
2015-06-26 18:24 ` Dave Taht
2015-06-26 18:38 ` Mikael Abrahamsson
2015-06-26 18:58 ` Dave Taht
2015-06-26 18:59 ` Dave Taht
2015-06-26 19:11 ` Mikael Abrahamsson
2015-06-26 19:13 ` Dave Taht
2015-06-27 5:03 ` Mikael Abrahamsson
2015-06-27 5:18 ` Dave Taht
2015-06-27 5:50 ` Mikael Abrahamsson
2015-06-27 17:59 ` Dave Taht
2015-06-27 18:23 ` Mikael Abrahamsson
2015-06-27 18:52 ` Dave Taht
2015-06-27 23:13 ` Sebastian Moeller
2015-06-28 7:06 ` Mikael Abrahamsson
2015-06-28 8:23 ` Sebastian Moeller
2015-06-28 10:29 ` Mikael Abrahamsson
2015-06-28 17:04 ` Sebastian Moeller
2015-06-28 17:32 ` Mikael Abrahamsson
2015-06-28 17:58 ` Jonathan Morton
2015-06-28 18:04 ` Dave Taht
2015-06-28 18:55 ` Sebastian Moeller
2015-06-28 19:17 ` Mikael Abrahamsson
2015-06-28 19:24 ` Sebastian Moeller
2015-06-28 20:48 ` Mikael Abrahamsson
2015-06-28 21:23 ` Sebastian Moeller
2015-06-29 4:58 ` Mikael Abrahamsson
2015-06-29 5:11 ` Mikael Abrahamsson
2015-06-29 7:46 ` Sebastian Moeller
2015-06-29 7:54 ` Mikael Abrahamsson
2015-06-29 7:56 ` Sebastian Moeller
2015-06-29 8:10 ` Sebastian Moeller
2015-06-29 8:17 ` Mikael Abrahamsson
2015-06-29 8:24 ` Sebastian Moeller
2015-06-29 7:44 ` Sebastian Moeller
2015-06-29 8:09 ` Mikael Abrahamsson
2015-06-29 8:34 ` Sebastian Moeller
2015-06-29 8:42 ` Sebastian Moeller
2015-06-29 9:12 ` Mikael Abrahamsson
2015-06-29 10:09 ` Toke Høiland-Jørgensen
2015-06-29 13:00 ` Mikael Abrahamsson
2015-06-29 13:34 ` Sebastian Moeller
2015-06-29 13:46 ` dpreed
2015-06-29 16:45 ` Jonathan Morton
2015-06-30 13:58 ` [Cerowrt-devel] Build instructions for regular OpenWRT with Ceropackages Mikael Abrahamsson
2015-06-30 16:20 ` dpreed
2015-06-30 19:58 ` Mikael Abrahamsson
2015-07-01 8:23 ` David Lang
2015-07-01 10:32 ` Mikael Abrahamsson
2015-07-01 11:55 ` Sebastian Moeller
2015-07-01 15:37 ` dpreed
2015-06-29 13:42 ` [Cerowrt-devel] performance numbers from WRT1200AC (Re: Latest build test - new sqm-scripts seem to work; "cake overhead 40" didn't) Sebastian Moeller
2015-06-29 16:44 ` Dave Taht [this message]
2015-06-29 18:24 ` Sebastian Moeller
2015-06-29 22:15 ` Mikael Abrahamsson
2015-06-29 22:49 ` Mikael Abrahamsson
2015-06-30 8:00 ` Mikael Abrahamsson
2015-06-30 9:40 ` Mikael Abrahamsson
2015-07-02 15:33 ` Mikael Abrahamsson
2015-07-02 15:39 ` Toke Høiland-Jørgensen
2015-07-02 15:43 ` Mikael Abrahamsson
2015-07-02 15:47 ` Toke Høiland-Jørgensen
2015-07-02 16:06 ` dpreed
2015-07-02 19:12 ` Mikael Abrahamsson
2015-07-07 1:07 ` David Lang
2015-07-02 16:09 ` Rich Brown
2015-07-02 16:12 ` Toke Høiland-Jørgensen
2015-07-03 11:38 ` Mikael Abrahamsson
2015-06-29 6:12 ` Mikael Abrahamsson
2015-06-28 18:48 ` Sebastian Moeller
2015-06-26 16:34 ` Dave Taht
2015-06-26 16:27 ` Sebastian Moeller
2015-06-26 16:36 ` Mikael Abrahamsson
2015-06-26 16:43 ` Dave Taht
2015-06-26 17:01 ` Mikael Abrahamsson
2015-06-23 14:35 ` [Cerowrt-devel] Latest build test - new sqm-scripts seem to work; "cake overhead 40" didn't Jim Reisert AD1C
2015-06-23 14:40 ` Dave Taht
2015-06-19 20:37 ` Sebastian Moeller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.bufferbloat.net/postorius/lists/cerowrt-devel.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAA93jw72jtxuj5jWWSL=QRY19zvNZB2tb7coOQCg+K03r4e1Cg@mail.gmail.com' \
--to=dave.taht@gmail.com \
--cc=cerowrt-devel@lists.bufferbloat.net \
--cc=moeller0@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox