* [PATCH v2] net/sched: sch_cake: skip redundant cake_mq rate updates
@ 2026-10-27 4:32 Shubhang Kaushik (Ampere)
2026-10-27 9:55 ` Toke Høiland-Jørgensen
0 siblings, 1 reply; 2+ messages in thread
From: Shubhang Kaushik (Ampere) @ 2026-10-27 4:32 UTC (permalink / raw)
To: Toke Høiland-Jørgensen, Jamal Hadi Salim, Jiri Pirko,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Jonas Köppeler, Shubhang Kaushik,
Christoph Lameter (Ampere)
Cc: Toke Høiland-Jørgensen, cake, netdev, linux-kernel,
Shubhang Kaushik (Ampere)
cake_mq periodically counts active child qdiscs in cake_dequeue() and
derives an effective per-child shaper rate. cake_dequeue() currently
reconfigures every tin after each scan, even when that effective rate
is unchanged.
The dequeue-time call chain is:
cake_dequeue()
-> cake_configure_rates(..., true)
-> cake_config_*()
-> cake_set_rate()
With rate_adjust=true, cake_set_rate() only refreshes rate-derived
state. Tin 0 records the unscaled rate argument in every supported
CAKE tin mode, so its installed rate identifies whether this call chain
would change any state.
Skip the reconfiguration when the effective rate is already installed,
while continuing to update the activity-sampling timestamp and
active-queue statistic.
Fixes: 1bddd758bac2 ("net/sched: sch_cake: share shaper state across sub-instances of cake_mq")
Signed-off-by: Shubhang Kaushik (Ampere) <sh@gentwo.org>
---
Tested on an 80-core SMP, non-SMT Ampere Altra system (aarch64)
The test used a 32-TX-queue veth pair, with cake_mq
bandwidth 2gbit on the transmit side and the peer in a network
namespace. The workload was:
iperf3 -c 198.18.0.2 -P 32 -t 30
Validation against mainline commit a32e63a613aa80, the patched kernel
reduced cake_configure_rates() calls by 99.99% (2,477,627 to 206) and
aggregate helper time by 99.986% (3.477 s to 0.498 ms), while retaining
approximately 1.91 Gbit/s aggregate throughput (baseline:
1.91-1.92 Gbit/s). A separate per-child trace observed no
same-effective-rate calls on the patched kernel (@unchanged: 0).
Changing cake_mq bandwidth from 2Gbit to 1Gbit and back invoked
cake_configure_rates() 64 times, matching all 32 child CAKE qdiscs
updated for each of the two control-plane changes.
Changes in v2:
- Drop READ_ONCE() as suggested by Jonas Köppeler.
Link to v1: https://lore.kernel.org/r/20261025-net_sched_sch_cake-v1-1-5165c924a590@gentwo.org
---
net/sched/sch_cake.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c
index aa4043d662c1cc18858d3f9c80f9d9b281f26f72..3faccdbc03f765164e9695a42e4658467183294b 100644
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
@@ -2052,7 +2052,8 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
if (num_active_qs > 1)
new_rate = div64_u64(new_rate, num_active_qs);
- cake_configure_rates(sch, new_rate, true);
+ if (new_rate != q->tins[0].tin_rate_bps)
+ cake_configure_rates(sch, new_rate, true);
q->last_checked_active = now;
WRITE_ONCE(q->active_queues, num_active_qs);
}
---
base-commit: d135ab453a7400a34930bdda1ef4bdc8acfac80e
change-id: 20261025-net_sched_sch_cake-e6653fd393d6
Best regards,
--
Shubhang Kaushik (Ampere) <sh@gentwo.org>
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH v2] net/sched: sch_cake: skip redundant cake_mq rate updates
2026-10-27 4:32 [PATCH v2] net/sched: sch_cake: skip redundant cake_mq rate updates Shubhang Kaushik (Ampere)
@ 2026-10-27 9:55 ` Toke Høiland-Jørgensen
0 siblings, 0 replies; 2+ messages in thread
From: Toke Høiland-Jørgensen @ 2026-10-27 9:55 UTC (permalink / raw)
To: Shubhang Kaushik (Ampere),
Jamal Hadi Salim, Jiri Pirko, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Simon Horman, Jonas Köppeler,
Shubhang Kaushik, Christoph Lameter (Ampere)
Cc: cake, netdev, linux-kernel, Shubhang Kaushik (Ampere)
"Shubhang Kaushik (Ampere)" <sh@gentwo.org> writes:
> cake_mq periodically counts active child qdiscs in cake_dequeue() and
> derives an effective per-child shaper rate. cake_dequeue() currently
> reconfigures every tin after each scan, even when that effective rate
> is unchanged.
>
> The dequeue-time call chain is:
>
> cake_dequeue()
> -> cake_configure_rates(..., true)
> -> cake_config_*()
> -> cake_set_rate()
>
> With rate_adjust=true, cake_set_rate() only refreshes rate-derived
> state. Tin 0 records the unscaled rate argument in every supported
> CAKE tin mode, so its installed rate identifies whether this call chain
> would change any state.
>
> Skip the reconfiguration when the effective rate is already installed,
> while continuing to update the activity-sampling timestamp and
> active-queue statistic.
>
> Fixes: 1bddd758bac2 ("net/sched: sch_cake: share shaper state across sub-instances of cake_mq")
> Signed-off-by: Shubhang Kaushik (Ampere) <sh@gentwo.org>
> ---
> Tested on an 80-core SMP, non-SMT Ampere Altra system (aarch64)
> The test used a 32-TX-queue veth pair, with cake_mq
> bandwidth 2gbit on the transmit side and the peer in a network
> namespace. The workload was:
>
> iperf3 -c 198.18.0.2 -P 32 -t 30
>
> Validation against mainline commit a32e63a613aa80, the patched kernel
> reduced cake_configure_rates() calls by 99.99% (2,477,627 to 206) and
> aggregate helper time by 99.986% (3.477 s to 0.498 ms), while retaining
> approximately 1.91 Gbit/s aggregate throughput (baseline:
> 1.91-1.92 Gbit/s). A separate per-child trace observed no
> same-effective-rate calls on the patched kernel (@unchanged: 0).
> Changing cake_mq bandwidth from 2Gbit to 1Gbit and back invoked
> cake_configure_rates() 64 times, matching all 32 child CAKE qdiscs
> updated for each of the two control-plane changes.
>
> Changes in v2:
> - Drop READ_ONCE() as suggested by Jonas Köppeler.
>
> Link to v1: https://lore.kernel.org/r/20261025-net_sched_sch_cake-v1-1-5165c924a590@gentwo.org
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-27 9:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-27 4:32 [PATCH v2] net/sched: sch_cake: skip redundant cake_mq rate updates Shubhang Kaushik (Ampere)
2026-10-27 9:55 ` Toke Høiland-Jørgensen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®