mbox series

[net-next,0/2] sched: refactor NOLOCK qdiscs

Message ID cover.1526392746.git.pabeni@redhat.com
Headers show
Series sched: refactor NOLOCK qdiscs | expand

Message

Paolo Abeni May 15, 2018, 2:24 p.m. UTC
With the introduction of NOLOCK qdiscs, pfifo_fast performances in the
uncontended scenario degraded measurably, especially after the commit
eb82a9944792 ("net: sched, fix OOO packets with pfifo_fast").

This series restore the pfifo_fast performances in such scenario back the
previous level, mainly reducing the number of atomic operations required to
perform the qdisc_run() call. Even performances in the contended scenario
increase measurably.

Note: This series is on top of:

sched: manipulate __QDISC_STATE_RUNNING in qdisc_run_* helpers

Paolo Abeni (2):
  sched: replace __QDISC_STATE_RUNNING bit with a spin lock
  pfifo_fast: drop unneeded additional lock on dequeue

 include/linux/skb_array.h |  5 +++++
 include/net/sch_generic.h | 10 +++++-----
 net/sched/sch_generic.c   | 15 +++++++++++++--
 3 files changed, 23 insertions(+), 7 deletions(-)

Comments

David Miller May 17, 2018, 5:06 p.m. UTC | #1
From: Paolo Abeni <pabeni@redhat.com>
Date: Tue, 15 May 2018 16:24:35 +0200

> With the introduction of NOLOCK qdiscs, pfifo_fast performances in the
> uncontended scenario degraded measurably, especially after the commit
> eb82a9944792 ("net: sched, fix OOO packets with pfifo_fast").
> 
> This series restore the pfifo_fast performances in such scenario back the
> previous level, mainly reducing the number of atomic operations required to
> perform the qdisc_run() call. Even performances in the contended scenario
> increase measurably.
> 
> Note: This series is on top of:
> 
> sched: manipulate __QDISC_STATE_RUNNING in qdisc_run_* helpers

Series applied, thank you.