Xiaomi AX3600 (IPQ8071A) - low download speed (only 192Mbps) with SQM enabled

Hey,
I am having a problem with my Xiaomi AX3600 router with my 600Mbps (download) and 100 Mbps (upload) connection. I am using the AX3600 router as my main router at home, which connects directly to my fibre connection. As I am very keen on low latency, low ping (lots of devices plugged in, many people using it at the same time, need for low latency), I decided to activate the SQM function. This feature definitely reduces any latency relative to using full speed, however I notice a very drastic cut in download transfers. My network can also tend to fluctuate in mainly download speeds (sometimes 600MB, sometimes 400MB), so SQM can also help me with this.
Unfortunately, I don't know what configuration options in OpenWRT to use to ensure higher download transfers, and whether it's even possible to get higher speeds on the official OpenWRT software (if not, I'm willing to try the unofficial OpenWRT software with NSS support (if my transfer speeds with SQM thanks to NSS increase)). However, I point out that I am very keen on stability.

Below I will show a few different configurations and the speeds presented, which may help to direct and show my situation. Values are presented using an Ethernet cable (not WiFi).

  1. Raw internet connection (total speed from operator) (without Xiaomi AX3600 router):

  2. Internet connection with no additional features enabled (packet steering disabled, SQM disabled, software offloading disabled, no irqbalance):


    CPU usage:

  3. Internet connection with software offloading (packet steering disabled, SQM disabled, software offloading enabled, no irqbalance):


    CPU usage:

  4. Internet connection with SQM (packet steering disabled, SQM enabled, software offloading disabled, no irqbalance):


    CPU usage:

  5. Internet connection with packet steering (packet steering enabled, SQM disabled, software offloading disabled, no irqbalance):


    CPU usage:

  6. Internet connection with SQM and software offloading (packet steering disabled, SQM enabled, software offloading enabled, no irqbalance):


    CPU usage:

So perhaps you have some ideas? Please help me with options and advice on improving data speeds. If any additional information is required that may help, please feel free to write and I will try to post it.
Thank you in advance for your help.

Btw some minutes ago I tried to do configuration: packet steering enabled and SQM enabled and it works really not bad. But what do you think about such a connection and can packet steering work stably with SQM? Or maybe any other ideas/functions?

  1. Packet steering + SQM:

    CPU usage:

Yes it is safe
Make qdisc timers powersave resistant

sysctl kernel.timer_migration=0 | tee -a /etc/sysctl.conf

Re-run htop with F2 - uncheck hide kernel threads and check detailed CPU
Then show CPU usage without and with SQM while running test.

Okey,
after your command:

Enable steering, it is default on most multiprocessor platforms. Command is to stabilize single-thread qdisc like sqm or cake migrating between CPUs.

More helpful info:

  1. ifstatus wan
root@Xiaomi_AX3600:~# ifstatus wan
{
        "up": true,
        "pending": false,
        "available": true,
        "autostart": true,
        "dynamic": false,
        "uptime": 391,
        "l3_device": "wan",
        "proto": "dhcp",
        "device": "wan",
        "updated": [
                "addresses",
                "routes",
                "data"
        ],
        "metric": 0,
        "dns_metric": 0,
        "delegation": true,
        "ipv4-address": [
                {
                        "address": "192.168.101.4",
                        "mask": 24
                }
        ],
        "ipv6-address": [

        ],
        "ipv6-prefix": [

        ],
        "ipv6-prefix-assignment": [

        ],
        "route": [
                {
                        "target": "0.0.0.0",
                        "mask": 0,
                        "nexthop": "192.168.101.1",
                        "source": "192.168.101.4/32"
                }
        ],
        "dns-server": [
                "192.168.101.1"
        ],
        "dns-search": [

        ],
        "neighbors": [

        ],
        "inactive": {
                "ipv4-address": [

                ],
                "ipv6-address": [

                ],
                "route": [

                ],
                "dns-server": [

                ],
                "dns-search": [

                ],
                "neighbors": [

                ]
        },
        "data": {
                "dhcpserver": "192.168.101.1",
                "leasetime": 259200
        }
}
  1. cat /etc/config/sqm
root@Xiaomi_AX3600:~# cat /etc/config/sqm

config queue 'eth1'
        option enabled '1'
        option interface 'wan'
        option download '530000'
        option upload '80000'
        option qdisc 'cake'
        option script 'piece_of_cake.qos'
        option linklayer 'ethernet'
        option debug_logging '0'
        option verbosity '5'
        option overhead '44'

  1. tc -s qdisc (before speedtest speed.cloudflare.com)
root@Xiaomi_AX3600:~# tc -s qdisc
qdisc noqueue 0: dev lo root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc cake 800d: dev wan root refcnt 5 bandwidth 80Mbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 44 
 Sent 58938467 bytes 167310 pkt (dropped 8, overlimits 81886 requeues 0) 
 backlog 0b 0p requeues 0
 memory used: 313216b of 4Mb
 capacity estimate: 80Mbit
 min/max network layer size:           28 /    1452
 min/max overhead-adjusted size:       72 /    1496
 average network hdr offset:           14

                  Tin 0
  thresh         80Mbit
  target            5ms
  interval        100ms
  pk_delay         89us
  av_delay          6us
  sp_delay          3us
  backlog            0b
  pkts           167318
  bytes        58950099
  way_inds            0
  way_miss          157
  way_cols            0
  drops               8
  marks               0
  ack_drop            0
  sp_flows            3
  bk_flows            1
  un_flows            0
  max_len         17448
  quantum          1514

qdisc ingress ffff: dev wan parent ffff:fff1 ---------------- 
 Sent 473132117 bytes 346354 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc mq 0: dev lan1 root 
 Sent 3555745511 bytes 2700472 pkt (dropped 0, overlimits 0 requeues 70) 
 backlog 0b 0p requeues 70
qdisc fq_codel 0: dev lan1 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 321226 bytes 1339 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan1 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 529239 bytes 1928 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan1 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 829008 bytes 1498 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan1 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 3554066038 bytes 2695707 pkt (dropped 0, overlimits 0 requeues 70) 
 backlog 0b 0p requeues 70
  maxpacket 1466 drop_overlimit 0 new_flow_count 3 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc mq 0: dev lan2 root 
 Sent 564191 bytes 6058 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev lan2 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 40 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan2 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 362 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan2 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan2 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 563789 bytes 6054 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc mq 0: dev lan3 root 
 Sent 695999 bytes 7377 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev lan3 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 1147 bytes 6 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan3 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 362 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan3 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 20 bytes 1 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan3 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 694470 bytes 7368 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc noqueue 0: dev br-lan root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy1-ap0 root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy2-ap0 root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy2-ap1 root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc cake 800e: dev ifb4wan root refcnt 2 bandwidth 530Mbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms noatm overhead 44 
 Sent 489999315 bytes 346251 pkt (dropped 103, overlimits 18091 requeues 0) 
 backlog 0b 0p requeues 0
 memory used: 1240292b of 15140Kb
 capacity estimate: 530Mbit
 min/max network layer size:           46 /    1452
 min/max overhead-adjusted size:       90 /    1496
 average network hdr offset:           14

                  Tin 0
  thresh        530Mbit
  target            5ms
  interval        100ms
  pk_delay       2.42ms
  av_delay       2.24ms
  sp_delay          2us
  backlog            0b
  pkts           346354
  bytes       490150313
  way_inds            0
  way_miss          148
  way_cols            0
  drops             103
  marks               0
  ack_drop            0
  sp_flows            3
  bk_flows            1
  un_flows            0
  max_len         67436
  quantum          1514
  1. tc -s qdisc (after speedtest speed.cloudflare.com)
root@Xiaomi_AX3600:~# tc -s qdisc
qdisc noqueue 0: dev lo root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc cake 800d: dev wan root refcnt 5 bandwidth 80Mbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 44 
 Sent 117337389 bytes 324317 pkt (dropped 16, overlimits 163357 requeues 0) 
 backlog 0b 0p requeues 0
 memory used: 726912b of 4Mb
 capacity estimate: 80Mbit
 min/max network layer size:           28 /    1452
 min/max overhead-adjusted size:       72 /    1496
 average network hdr offset:           14

                  Tin 0
  thresh         80Mbit
  target            5ms
  interval        100ms
  pk_delay        701us
  av_delay        155us
  sp_delay          2us
  backlog            0b
  pkts           324333
  bytes       117360653
  way_inds            0
  way_miss          275
  way_cols            0
  drops              16
  marks               0
  ack_drop            0
  sp_flows            1
  bk_flows            1
  un_flows            0
  max_len         17448
  quantum          1514

qdisc ingress ffff: dev wan parent ffff:fff1 ---------------- 
 Sent 945668646 bytes 691404 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc mq 0: dev lan1 root 
 Sent 4045084412 bytes 3045138 pkt (dropped 0, overlimits 0 requeues 70) 
 backlog 0b 0p requeues 70
qdisc fq_codel 0: dev lan1 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 390983 bytes 1746 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan1 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 546341 bytes 2005 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan1 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 869720 bytes 1718 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan1 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 4043277368 bytes 3039669 pkt (dropped 0, overlimits 0 requeues 70) 
 backlog 0b 0p requeues 70
  maxpacket 1466 drop_overlimit 0 new_flow_count 3 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc mq 0: dev lan2 root 
 Sent 657322 bytes 7116 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev lan2 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 40 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan2 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 362 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan2 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan2 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 656920 bytes 7112 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc mq 0: dev lan3 root 
 Sent 818951 bytes 8743 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev lan3 parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 1147 bytes 6 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan3 parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 362 bytes 2 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan3 parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 20 bytes 1 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev lan3 parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64 
 Sent 817422 bytes 8734 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
  maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc noqueue 0: dev br-lan root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy1-ap0 root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy2-ap0 root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev phy2-ap1 root refcnt 2 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0
qdisc cake 800e: dev ifb4wan root refcnt 2 bandwidth 530Mbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms noatm overhead 44 
 Sent 979355236 bytes 691223 pkt (dropped 181, overlimits 36381 requeues 0) 
 backlog 0b 0p requeues 0
 memory used: 1337052b of 15140Kb
 capacity estimate: 530Mbit
 min/max network layer size:           46 /    1452
 min/max overhead-adjusted size:       90 /    1496
 average network hdr offset:           14

                  Tin 0
  thresh        530Mbit
  target            5ms
  interval        100ms
  pk_delay        206us
  av_delay         45us
  sp_delay          4us
  backlog            0b
  pkts           691404
  bytes       979620582
  way_inds            0
  way_miss          245
  way_cols            0
  drops             181
  marks               0
  ack_drop            0
  sp_flows            1
  bk_flows            1
  un_flows            0
  max_len         67436
  quantum          1514

Enable steering for SQM test again. Fast.com permits longer tests.

Okey,

In this case I was also surprised by one thing - with SQM on, my latency increased more during download than when SQM was off. What do you think about this?

Please add
ubus call system board
And redo either of last 2 screens with htop changed F2- unhide kernel threads and enable cpu detail
There seems to be some CPU balancing anomaly
Normal look(sqm via br-wan and sw offload on if you wonder why so low softirq):

I understand you.

root@Xiaomi_AX3600:~# ubus call system board
{
        "kernel": "5.15.150",
        "hostname": "Xiaomi_AX3600",
        "system": "ARMv8 Processor rev 4",
        "model": "Xiaomi AX3600",
        "board_name": "xiaomi,ax3600",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.3",
                "revision": "r23809-234f1a2efa",
                "target": "ipq807x/generic",
                "description": "OpenWrt 23.05.3 r23809-234f1a2efa"
        }
}

There is it with more details:

Generally I see that all the time 1 of 4 cores is 100% usage - and that is ok for my router? Or does it cause any disadvantages?

1 Like

I see that too, disable SQM but try bandwidth-free output-only qdiscs on WAN interface:

tc qdisc replace dev wan root pfifo_fast
... sfq
... fq_codel
... cake
... bfifo
... fq_codel (single-threaded, not mq)
Maybe one hits the sweet spot in CPU usage and latency.

I don't know how to try bandwidth-free output-only qdiscs on WAN interface.

Should I try each command by replacing the "pfifo_fast" part? Do I do some kind of speed test between them?

Yes, just change root qdisc to your wan side interface and run waveform test while observing htop. It does half work of SQM, but as you see default only upload direction is problematic, so very likely to succeed.

to me this looks like the sweet spot :slight_smile:

3 Likes

@MisiekDP you can do that, but it will not actually help with bufferbloat... you really need to move the bottleneck from the ISP to your own router, and to do this you need a traffic shaper...
In sqm-scripts you could try the HTB based simple.qos or the TBF based simplest_TPB.qos each with selecting fq_codel as (leaf) qdisc... The observation is that especially TBF is considerably cheaper in required CPU cycles than cake's traffic shaper.

@brada4, please explain how these will achieve decent responsiveness under load? You keep coming up with this idea in several threads, but I yet have to learn what hypothesis sits behind that recommendation.

Yes, on multi-core routers packet steering is essential that way at least the downstream and upstream sqm instances can operate on different CPUs...

2 Likes

Do you think this is a good enough point to leave it at? Overall, with these two options it already works very decently. But if you can do something better then why not try :slight_smile:

I know and I understand you. That is why I want help with my bufferbloat :slight_smile:
So I tested all 4 options and I don't see any major differences (also the load on the CPU cores looks very similar), although I may be missing something.

As a minimum by not maxing out CPU for dropped packets in stack.

Well, unless you move the bottleneck onto your own router the qdisc on that router has very little to no effect on bufferbloat/responsiveness under load (because AQM, active queue management, needs a queue to buikt up to engage, but typically the queues are in the ISP's gear). So trying different qdiscs without a shaper (or relying on BQL to generate backpressure if the egress interface is the natural bottleneck) is not going to improve the latency situation noticeably. At which point I wonder why recommend to try different qdiscs.

I wonder whether you could try to spend a little more time to explain the thought behind your recommendations, please? I am sure your advice is well thought out, yet often no rationale is given (or one that is too terse to explain) and that makes it less helpful than it could be.

There is no problem to solve to start with, cpu hog in form of SQM makes things worse.