Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/3] net/sched: bound the deficit-refill dequeue loops
@ 2026-10-15 21:18 Victor Nogueira
  2026-10-15 21:18 ` [PATCH net-next v2 1/3] net/sched: drr, ets, sfq: skip empty rounds in the deficit-refill dequeue loop Victor Nogueira
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Victor Nogueira @ 2026-10-15 21:18 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, jhs, jiri, netdev
  Cc: horms, sashiko-bot, Shuah Khan, linux-kselftest

DRR, ETS, sfq, fq, fq_codel and fq_pie refill the head entity one
quantum at a time until it can send. With a size table that inflates
packets to 1 MiB and a quantum of 256, one dequeue can loop millions of
times under the qdisc lock. This series skips the rounds in which
nothing can send, so a dequeue costs O(N).

1/3 fixes drr, ets and sfq.
2/3 fixes fq, fq_codel and fq_pie. There, a flow can still fail to send
after the skip (throttled or AQM drop), so a crafted setup can still be
slow.
3/3 adds DRR and ETS tests for the refill result and service order.

v1 -> v2:
- fq, fq_codel and fq_pie moved to their own patch (2/3)
- empty flows are credited and removed as the old loop would
- tests reworded, ETS case added
v1: https://lore.kernel.org/netdev/QDISC-TIAE.v1.20261008110502@mojatatu.com/

Victor Nogueira (3):
  net/sched: drr, ets, sfq: skip empty rounds in the deficit-refill
    dequeue loop
  net/sched: fq, fq_codel, fq_pie: skip empty rounds in the
    deficit-refill dequeue loop
  selftests: tc-testing: pin DRR and ETS deficit refill semantics

 net/sched/sch_drr.c                           | 42 +++++++++-
 net/sched/sch_ets.c                           | 41 +++++++++-
 net/sched/sch_fq.c                            | 81 +++++++++++++++++-
 net/sched/sch_fq_codel.c                      | 74 ++++++++++++++++-
 net/sched/sch_fq_pie.c                        | 68 ++++++++++++++-
 net/sched/sch_sfq.c                           | 41 +++++++++-
 .../tc-testing/tc-tests/qdiscs/drr.json       | 82 +++++++++++++++++++
 .../tc-testing/tc-tests/qdiscs/ets.json       | 54 ++++++++++++
 8 files changed, 475 insertions(+), 8 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-10-19 21:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-15 21:18 [PATCH net-next v2 0/3] net/sched: bound the deficit-refill dequeue loops Victor Nogueira
2026-10-15 21:18 ` [PATCH net-next v2 1/3] net/sched: drr, ets, sfq: skip empty rounds in the deficit-refill dequeue loop Victor Nogueira
2026-10-19 21:39   ` netdev-bot+sashiko
2026-10-15 21:18 ` [PATCH net-next v2 2/3] net/sched: fq, fq_codel, fq_pie: " Victor Nogueira
2026-10-19 21:39   ` netdev-bot+sashiko
2026-10-15 21:18 ` [PATCH net-next v2 3/3] selftests: tc-testing: pin DRR and ETS deficit refill semantics Victor Nogueira
2026-10-19 21:39   ` netdev-bot+sashiko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox