Re: [PATCH net-next] net: minor optimization in qdisc_qstats_cpu_drop()

2016-08-25 Thread David Miller
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()

2016-08-24 Thread Eric Dumazet
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()

2016-08-24 Thread Eric Dumazet
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()

2016-08-24 Thread Rick Jones

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()

2016-08-24 Thread John Fastabend
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()

2016-08-24 Thread Eric Dumazet
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)