[Bloat] Re: [Cake] Re: Re: CAKE-MQ merged to OpenWrt 25.12 today (February 15)

Toke Høiland-Jørgensen
2026-02-17T16:32:46Z

Stephen Hemminger <stephen@networkplumber.org> writes:

> On Tue, 17 Feb 2026 14:23:52 +0100
> Toke Høiland-Jørgensen via Cake <cake@lists.bufferbloat.net> wrote:
>
>> dave seddon <dave.seddon.ca@gmail.com> writes:
>>
>> > === Pre-flight Complete ===
>> > Running 6 test points
>> >
>> > [1/6] qdisc=fq_codel flows=1 tool=iperf2
>> > Switching qdisc to fq_codel...
>> > Throughput: 9.41 Gbps
>> > [2/6] qdisc=fq_codel flows=10 tool=iperf2
>> > Throughput: 9.43 Gbps
>> > [3/6] qdisc=cake flows=1 tool=iperf2
>> > Switching qdisc to cake...
>> > Throughput: 6.93 Gbps
>> > [4/6] qdisc=cake flows=10 tool=iperf2
>> > Throughput: 4.37 Gbps <---- cake
>> > [5/6] qdisc=mq-cake flows=1 tool=iperf2
>> > Switching qdisc to mq-cake...
>> > Throughput: 7.17 Gbps
>> > [6/6] qdisc=mq-cake flows=10 tool=iperf2
>> > Throughput: 9.44 Gbps <-----
>> > mq-cake ... Actually, that's interesting. higher than fq_codel
>>
>> Are you running fq_codel as the root qdisc? Because in that case you're
>> running through the single qdisc lock, which could explain the
>> difference. Try running separate fq_codel instances beneath an 'mq'
>> qdisc as the root.
>>
>> Also, if you're not setting a shaping rate, cake_mq is basically the
>> same as just installing an mq qdisc at the root and having separate cake
>> instances beneath that. So to test the multi-core shaper algorithm
>> you'll need to set a rate ('bandwidth' parameter).
>>
>
> This is what the OpenWrt SQM scripts seem to favor.
> I probably need to tune the adaption overhead
>
> # tc qdisc show dev wan
> qdisc htb 1: root refcnt 2 r2q 10 default 0x12 direct_packets_stat 0 direct_qlen 1000
> qdisc fq_codel 120: parent 1:12 limit 1001p flows 1024 quantum 300 target 5ms interval 100ms memory_limit 4Mb drop_batch 64
> qdisc fq_codel 130: parent 1:13 limit 1001p flows 1024 quantum 300 target 5ms interval 100ms memory_limit 4Mb drop_batch 64
> qdisc fq_codel 110: parent 1:11 limit 1001p flows 1024 quantum 300
> target 5ms interval 100ms memory_limit 4Mb drop_batch 64

If you set 'script' to 'layer_cake.qos' or 'piece_of_cake.qos' in the
config, you'll get a CAKE setup instead. On OpenWrt 25.12 (still in -rc)
this will automatically select cake_mq where the system supports it.

> It is dumb that in US it is standard to offer 1G down and 10M up!

Yes, very. Don't think it's actually possible to use that 1G link with
TCP without ACK thinning of some kind. The full-MTU-to-ACK ratio is ~47
(1500/32; this is assuming one 64-byte ACK for every two 1500-byte
packets), so you can only use ~470 Mbps downstream with 10M up. CAKE's
ACK thinning should help here, but you need to turn that on explicitly
by adding 'ack-filter' to eqdisc_opts in the config.

-Toke