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