Re: [PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()
From: Eric Dumazet Date: Wed, 24 Aug 2016 10:23:34 -0700 > From: Eric Dumazet > > per_cpu_inc() is faster (at least on x86) than per_cpu_ptr(xxx)++; > > Signed-off-by: Eric Dumazet Applied.
Re: [PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()
On Wed, 2016-08-24 at 11:04 -0700, Rick Jones wrote: > On 08/24/2016 10:23 AM, Eric Dumazet wrote: > > From: Eric Dumazet > > > > per_cpu_inc() is faster (at least on x86) than per_cpu_ptr(xxx)++; > > Is it possible it is non-trivially slower on other architectures? No, in the worst case, compiler would emit the same code.
Re: [PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()
On Wed, 2016-08-24 at 11:00 -0700, John Fastabend wrote: > Looks good to me. I guess we can also do the same for overlimit qstats. > > Acked-by: John Fastabend Not sure about overlimit, although I could probably change these : net/sched/act_bpf.c:85: qstats_drop_inc(this_cpu_ptr(prog->common.cpu_qstats)); net/sched/act_gact.c:145: qstats_drop_inc(this_cpu_ptr(gact->common.cpu_qstats));
Re: [PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()
On 08/24/2016 10:23 AM, Eric Dumazet wrote: From: Eric Dumazet per_cpu_inc() is faster (at least on x86) than per_cpu_ptr(xxx)++; Is it possible it is non-trivially slower on other architectures? rick jones Signed-off-by: Eric Dumazet --- include/net/sch_generic.h |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 0d501779cc68f9426e58da6d039dd64adc937c20..52a2015667b49c8315edbb26513a98d4c677fee5 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -592,7 +592,7 @@ static inline void qdisc_qstats_drop(struct Qdisc *sch) static inline void qdisc_qstats_cpu_drop(struct Qdisc *sch) { - qstats_drop_inc(this_cpu_ptr(sch->cpu_qstats)); + this_cpu_inc(sch->cpu_qstats->drops); } static inline void qdisc_qstats_overlimit(struct Qdisc *sch)
Re: [PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()
On 16-08-24 10:23 AM, Eric Dumazet wrote: > From: Eric Dumazet > > per_cpu_inc() is faster (at least on x86) than per_cpu_ptr(xxx)++; > > Signed-off-by: Eric Dumazet > --- > include/net/sch_generic.h |2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h > index > 0d501779cc68f9426e58da6d039dd64adc937c20..52a2015667b49c8315edbb26513a98d4c677fee5 > 100644 > --- a/include/net/sch_generic.h > +++ b/include/net/sch_generic.h > @@ -592,7 +592,7 @@ static inline void qdisc_qstats_drop(struct Qdisc *sch) > > static inline void qdisc_qstats_cpu_drop(struct Qdisc *sch) > { > - qstats_drop_inc(this_cpu_ptr(sch->cpu_qstats)); > + this_cpu_inc(sch->cpu_qstats->drops); > } > > static inline void qdisc_qstats_overlimit(struct Qdisc *sch) > > Looks good to me. I guess we can also do the same for overlimit qstats. Acked-by: John Fastabend
[PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()
From: Eric Dumazet per_cpu_inc() is faster (at least on x86) than per_cpu_ptr(xxx)++; Signed-off-by: Eric Dumazet --- include/net/sch_generic.h |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 0d501779cc68f9426e58da6d039dd64adc937c20..52a2015667b49c8315edbb26513a98d4c677fee5 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -592,7 +592,7 @@ static inline void qdisc_qstats_drop(struct Qdisc *sch) static inline void qdisc_qstats_cpu_drop(struct Qdisc *sch) { - qstats_drop_inc(this_cpu_ptr(sch->cpu_qstats)); + this_cpu_inc(sch->cpu_qstats->drops); } static inline void qdisc_qstats_overlimit(struct Qdisc *sch)