Re: [Linuxarm] [PATCH RFC v4 0/3] Some optimization for lockless qdisc

From: Yunsheng Lin
Date: Thu May 20 2021 - 05:48:40 EST


On 2021/5/20 17:27, Yunsheng Lin wrote:
> Patch 1: remove unnecessary seqcount operation.
> Patch 2: implement TCQ_F_CAN_BYPASS.
> Patch 3: remove qdisc->empty.
>
> RFC v4: Use STATE_MISSED and STATE_DRAINING to indicate non-empty
> qdisc, and add patch 1 and 3.

@Vladimir, Ahmad
It would be good to run your testcase to see if there are any
out of order for this version, because this version has used
STATE_MISSED and STATE_DRAINING to indicate non-empty qdisc,
thanks.

It is based on newest net branch with qdisc stuck patchset.

Some performance data as below:

pktgen + dummy netdev:
threads without+this_patch with+this_patch delta
1 2.60Mpps 3.18Mpps +22%
2 3.84Mpps 5.72Mpps +48%
4 5.52Mpps 5.52Mpps +0.0%
8 2.77Mpps 2.81Mpps +1.4%
16 2.24Mpps 2.29Mpps +2.2%

IP forward testing: 1.05Mpps increases to 1.15Mpps

>
> Yunsheng Lin (3):
> net: sched: avoid unnecessary seqcount operation for lockless qdisc
> net: sched: implement TCQ_F_CAN_BYPASS for lockless qdisc
> net: sched: remove qdisc->empty for lockless qdisc
>
> include/net/sch_generic.h | 26 +++++++++++++-------------
> net/core/dev.c | 22 ++++++++++++++++++++--
> net/sched/sch_generic.c | 23 ++++++++++++++++-------
> 3 files changed, 49 insertions(+), 22 deletions(-)
>