[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <57B4BFCE.2040507@gmail.com>
Date: Wed, 17 Aug 2016 12:49:34 -0700
From: John Fastabend <john.fastabend@...il.com>
To: xiyou.wangcong@...il.com, jhs@...atatu.com,
alexei.starovoitov@...il.com, eric.dumazet@...il.com,
brouer@...hat.com
Cc: john.r.fastabend@...el.com, netdev@...r.kernel.org,
davem@...emloft.net
Subject: Re: [RFC PATCH 12/13] net: sched: add support for TCQ_F_NOLOCK
subqueues to sch_mq
On 16-08-17 12:38 PM, John Fastabend wrote:
> The sch_mq qdisc creates a sub-qdisc per tx queue which are then
> called independently for enqueue and dequeue operations. However
> statistics are aggregated and pushed up to the "master" qdisc.
>
> This patch adds support for any of the sub-qdiscs to be per cpu
> statistic qdiscs. To handle this case add a check when calculating
> stats and aggregate the per cpu stats if needed.
>
> Also exports __gnet_stats_copy_queue() to use as a helper function.
>
> Signed-off-by: John Fastabend <john.r.fastabend@...el.com>
> ---
[...]
> + if (qdisc_is_percpu_stats(qdisc)) {
> + cpu_bstats = qdisc->cpu_bstats;
> + cpu_qstats = qdisc->cpu_qstats;
> + }
> +
> + qlen = qdisc_qlen_sum(qdisc);
> +
> + __gnet_stats_copy_basic(NULL, &sch->bstats,
> + cpu_bstats, &qdisc->bstats);
> + __gnet_stats_copy_queue(&sch->qstats,
> + cpu_qstats, &qdisc->qstats, qlen);
And also I forgot to bump this onto the atomic qlen and it is still
using the per cpu counters giving the incorrect qlen total.
Powered by blists - more mailing lists