Sqm worse at latest firmware on redmi ax6000

Hi, I recently installed OpenWRT 23.05.2 on it but I'm having worse results in sqm luci compared to the original firmware, I've already tried all the options available in the web interface with fy_codel (it was the least worse with simple.qos), cake with piece of cake... Queue Discipline and Link Layer Adaptation advanced options, I've read the page https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm

So to get to understand your link please:
Post the output of:

  1. ifstatus wan | grep device
  2. cat /etc/config/sqm
  3. tc -s qdisc

Then disable sqm:

  1. /etc/init.d/sqm stop
  2. run a browser speedtest each of:
    2.a) https://speed.cloudflare.com # (let it run to conclusion then post a screen shot of the result page here, ATTENTION this might reveal your IP address and location, which you might or might not want to redact before posting)
    2.b) https://www.waveform.com/tools/bufferbloat # (here post a link to the result page, from the "Share your result" box at the bottom of the results)

Then enable sqm again and run and post speedtests:

  1. /etc/init.d/sqm start
  2. run a browser speedtest each of:
    2.a) https://speed.cloudflare.com # (let it run to conclusion then post a screen shot of the result page here, ATTENTION this might reveal your IP address and location, which you might or might not want to redact before posting)
    2.b) https://www.waveform.com/tools/bufferbloat # (here post a link to the result page, from the "Share your result" box at the bottom of the results)

Also please tell us about your ISP and link technology.

This is to establish a baseline and understand your issues...

ifstatus wan | grep device
        "l3_device": "wan",
        "device": "wan",
root@OpenWrt:~# cat /etc/config/sqm
config queue 'eth1'
        option enabled '1'
        option interface 'wan'
        option download '400000'
        option upload '200000'
        option qdisc 'cake'
        option script 'piece_of_cake.qos'
        option linklayer 'ethernet'
        option debug_logging '0'
        option verbosity '5'
        option overhead '44'
root@OpenWrt:~# 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 mq 0: dev eth0 root
 Sent 3009475849 bytes 4373998 pkt (dropped 0, overlimits 0 requeues 474)
 backlog 0b 0p requeues 474
qdisc fq_codel 0: dev eth0 parent :10 limit 10240p flows 1024 quantum 1518 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 eth0 parent :f limit 10240p flows 1024 quantum 1518 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 eth0 parent :e limit 10240p flows 1024 quantum 1518 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 eth0 parent :d limit 10240p flows 1024 quantum 1518 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 eth0 parent :c limit 10240p flows 1024 quantum 1518 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 eth0 parent :b limit 10240p flows 1024 quantum 1518 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 eth0 parent :a limit 10240p flows 1024 quantum 1518 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 eth0 parent :9 limit 10240p flows 1024 quantum 1518 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 eth0 parent :8 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 1067313785 bytes 2425782 pkt (dropped 0, overlimits 0 requeues 218)
 backlog 0b 0p requeues 218
  maxpacket 1518 drop_overlimit 0 new_flow_count 187 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :7 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 4022300 bytes 24054 pkt (dropped 0, overlimits 0 requeues 5)
 backlog 0b 0p requeues 5
  maxpacket 418 drop_overlimit 0 new_flow_count 3 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :6 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 1937282834 bytes 1920802 pkt (dropped 0, overlimits 0 requeues 245)
 backlog 0b 0p requeues 245
  maxpacket 1518 drop_overlimit 0 new_flow_count 401 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :5 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 855218 bytes 3344 pkt (dropped 0, overlimits 0 requeues 6)
 backlog 0b 0p requeues 6
  maxpacket 418 drop_overlimit 0 new_flow_count 3 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :4 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 1712 bytes 16 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 eth0 parent :3 limit 10240p flows 1024 quantum 1518 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 eth0 parent :2 limit 10240p flows 1024 quantum 1518 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 eth0 parent :1 limit 10240p flows 1024 quantum 1518 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 noqueue 0: dev lan4 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan3 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan2 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8015: dev wan root refcnt 2 bandwidth 200Mbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 44
 Sent 326052118 bytes 1196995 pkt (dropped 0, overlimits 55127 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 200192b of 10000000b
 capacity estimate: 200Mbit
 min/max network layer size:           28 /    1500
 min/max overhead-adjusted size:       72 /    1544
 average network hdr offset:           14

                  Tin 0
  thresh        200Mbit
  target            5ms
  interval        100ms
  pk_delay          8us
  av_delay          1us
  sp_delay          1us
  backlog            0b
  pkts          1196995
  bytes       326052118
  way_inds        21724
  way_miss        40289
  way_cols            0
  drops               0
  marks               0
  ack_drop            0
  sp_flows            2
  bk_flows            1
  un_flows            0
  max_len         65102
  quantum          1514

qdisc ingress ffff: dev wan parent ffff:fff1 ----------------
 Sent 5746222859 bytes 4753285 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 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 phy0-ap0 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8016: dev ifb4wan root refcnt 2 bandwidth 400Mbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms noatm overhead 44
 Sent 5837540108 bytes 4753067 pkt (dropped 218, overlimits 7137220 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 4686019b of 15140Kb
 capacity estimate: 400Mbit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       90 /    1544
 average network hdr offset:           14

                  Tin 0
  thresh        400Mbit
  target            5ms
  interval        100ms
  pk_delay        299us
  av_delay        212us
  sp_delay          2us
  backlog            0b
  pkts          4753285
  bytes      5837865225
  way_inds        68153
  way_miss        26367
  way_cols            0
  drops             218
  marks               0
  ack_drop            0
  sp_flows            2
  bk_flows            1
  un_flows            0
  max_len         68130
  quantum          1514

Just make sure you "sandwich" your text between two rows of backtick characters ` (which themselves will be invisible in the preview) looking in something like this in the editor:
```
Your Pasted Text as preformatted text with fixed width font
1
1111 (note with fixed-width fonts the numbers are right-aligned)
```
but looking like this in the rendered forum:

Your Pasted Text as preformatted text with fixed width font
   1
1111 (note with fixed-width fonts the numbers are right-aligned)

OR

Please use the "Preformatted text </>" button for logs, scripts, configs and general console output.
grafik
Please edit your post accordingly. Thank you! :slight_smile:

This will make it much nicer to read console output that often is expecting a fixed width font for proper alignment across lines.

Here is how this looks for your data:

ifstatus wan | grep device
"l3_device": "wan",
"device": "wan",
root@OpenWrt:~# cat /etc/config/sqm

root@OpenWrt:~# cat /etc/config/sqm
config queue 'eth1'
option enabled '1'
option interface 'wan'
option download '400000'
option upload '200000'
option qdisc 'cake'
option script 'piece_of_cake.qos'
option linklayer 'ethernet'
option debug_logging '0'
option verbosity '5'
option overhead '44'

root@OpenWrt:~# 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 mq 0: dev eth0 root
Sent 3009475849 bytes 4373998 pkt (dropped 0, overlimits 0 requeues 474)
backlog 0b 0p requeues 474
qdisc fq_codel 0: dev eth0 parent :10 limit 10240p flows 1024 quantum 1518 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 eth0 parent :f limit 10240p flows 1024 quantum 1518 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 eth0 parent :e limit 10240p flows 1024 quantum 1518 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 eth0 parent :d limit 10240p flows 1024 quantum 1518 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 eth0 parent :c limit 10240p flows 1024 quantum 1518 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 eth0 parent :b limit 10240p flows 1024 quantum 1518 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 eth0 parent :a limit 10240p flows 1024 quantum 1518 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 eth0 parent :9 limit 10240p flows 1024 quantum 1518 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 eth0 parent :8 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
Sent 1067313785 bytes 2425782 pkt (dropped 0, overlimits 0 requeues 218)
backlog 0b 0p requeues 218
maxpacket 1518 drop_overlimit 0 new_flow_count 187 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :7 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
Sent 4022300 bytes 24054 pkt (dropped 0, overlimits 0 requeues 5)
backlog 0b 0p requeues 5
maxpacket 418 drop_overlimit 0 new_flow_count 3 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :6 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
Sent 1937282834 bytes 1920802 pkt (dropped 0, overlimits 0 requeues 245)
backlog 0b 0p requeues 245
maxpacket 1518 drop_overlimit 0 new_flow_count 401 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :5 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
Sent 855218 bytes 3344 pkt (dropped 0, overlimits 0 requeues 6)
backlog 0b 0p requeues 6
maxpacket 418 drop_overlimit 0 new_flow_count 3 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :4 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
Sent 1712 bytes 16 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 eth0 parent :3 limit 10240p flows 1024 quantum 1518 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 eth0 parent :2 limit 10240p flows 1024 quantum 1518 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 eth0 parent :1 limit 10240p flows 1024 quantum 1518 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 noqueue 0: dev lan4 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan3 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev lan2 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc cake 8015: dev wan root refcnt 2 bandwidth 200Mbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 44
Sent 326052118 bytes 1196995 pkt (dropped 0, overlimits 55127 requeues 0)
backlog 0b 0p requeues 0
memory used: 200192b of 10000000b
capacity estimate: 200Mbit
min/max network layer size: 28 / 1500
min/max overhead-adjusted size: 72 / 1544
average network hdr offset: 14
              Tin 0
thresh 200Mbit
target 5ms
interval 100ms
pk_delay 8us
av_delay 1us
sp_delay 1us
backlog 0b
pkts 1196995
bytes 326052118
way_inds 21724
way_miss 40289
way_cols 0
drops 0
marks 0
ack_drop 0
sp_flows 2
bk_flows 1
un_flows 0
max_len 65102
quantum 1514
qdisc ingress ffff: dev wan parent ffff:fff1 ----------------
Sent 5746222859 bytes 4753285 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 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 phy0-ap0 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc cake 8016: dev ifb4wan root refcnt 2 bandwidth 400Mbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms noatm overhead 44
Sent 5837540108 bytes 4753067 pkt (dropped 218, overlimits 7137220 requeues 0)
backlog 0b 0p requeues 0
memory used: 4686019b of 15140Kb
capacity estimate: 400Mbit
min/max network layer size: 46 / 1500
min/max overhead-adjusted size: 90 / 1544
average network hdr offset: 14
              Tin 0
thresh 400Mbit
target 5ms
interval 100ms
pk_delay 299us
av_delay 212us
sp_delay 2us
backlog 0b
pkts 4753285
bytes 5837865225
way_inds 68153
way_miss 26367
way_cols 0
drops 218
marks 0
ack_drop 0
sp_flows 2
bk_flows 1
un_flows 0
max_len 68130
quantum 1514
1 Like

Quick note, that redmi ax6000 uses a quad core arm A53 CPU. This is a low power/efficiency core from 2012 that for efficiency reasons is implemented as in-order... I am sorry to report that this core is a bit fickle*...
I guess also should look at the output of:

  1. cat /proc/interrupts
  2. cat /proc/softirqs

*) Don't get me wrong as a core there is nothing wrong with the a53 there is however something wrong of plugging that into a SoC for modern routers...

2 Likes

https://www.waveform.com/tools/bufferbloat?test-id=b7d30928-60b5-4964-9c3d-2951e4f0a122 (no sqm)

https://www.waveform.com/tools/bufferbloat?test-id=5a7789b1-a2c2-4635-931a-52e129bdd35c (with sqm)

https://ibb.co/Nt3LyY0 (no sqm)

https://ibb.co/5k2CKT4 (with sqm)

V.tal GPON FTTH 400/200MB Ont Nokia bridged.

1 Like
root@OpenWrt:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 11:    3430727    1585414    2941480    2219491     GICv3  30 Level     arch_timer
 14:          0          0          0          0     GICv3 142 Level     wdt_bark
 25:          0          0          0          0   mt-eint   9 Edge      keys
 26:          0          0          0          0   mt-eint  10 Edge      keys
 82:         34          0          0          0   mt-eint  66 Level     mt7530
117:          0          0          0          0     GICv3 148 Level     10320000.crypto
118:          0          0          0          0     GICv3 149 Level     10320000.crypto
119:          0          0          0          0     GICv3 150 Level     10320000.crypto
120:          0          0          0          0     GICv3 151 Level     10320000.crypto
121:         12          0          0          0     GICv3 155 Level     ttyS0
122:      46931          0          0          0     GICv3 172 Level     1100a000.spi
123:     287813          0          0          0     GICv3 173 Level     1100b000.spi
130:    3956101          0          0          0     GICv3 229 Level     15100000.ethernet
131:    3856027          0          0          0     GICv3 230 Level     15100000.ethernet
133:    9094448          0          0          0     GICv3 245 Level     mt7915e
137:          0          5          0          0    mt7530   1 Edge      mt7530-0:01
138:          0         21          0          0    mt7530   2 Edge      mt7530-0:02
139:          0          3          0          0    mt7530   3 Edge      mt7530-0:03
140:          0          5          0          0    mt7530   4 Edge      mt7530-0:04
IPI0:      3963      32564       8361       5280       Rescheduling interrupts
IPI1:    539105   10189852    5202691    5270992       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:         0          0          0          0       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
Err:          0
root@OpenWrt:~# cat /proc/softirqs
                    CPU0       CPU1       CPU2       CPU3
          HI:          0          0          0          0
       TIMER:     275370     403876     975307     580968
      NET_TX:    2718238     841037    1640466    1313717
      NET_RX:    2662897     628519     811468     559342
       BLOCK:          0          0          0          0
    IRQ_POLL:          0          0          0          0
     TASKLET:   16326612    2877512    3284200    1623404
       SCHED:     554717     601152    1210235     804181
     HRTIMER:          0          0          0          0
         RCU:     298893     258514     389488     305233

Ok, edited. I already put the speedtests above.

Not to doubt you or anything but I'm confused. Are you sure you are looking at the right thing? The MT7986A got a FCC in 2021 Q3 according to: http://en.techinfodepot.shoutwiki.com/wiki/MediaTek

It also supports DDR4. DDR4 didn't come out till 2014. I mean I guess they will somehow backported DDR4 compatibility in a 2012 chip but that seems really strange. The reason I bring it up is this same soc has been known to do Cake at over 3 Gbps in the Asus TUF-AX6000.

1 Like

Both ethernet interrupts sit on CPU0, so if all shapers should end up there as well that core will likely get overloaded...

And here also more than a fair share of NET_TX, NET_RX and TASKLET end up on CPU0

well possible that the problem is CPU overload (together with quite high shaper rates 400/200 Mbps is quite some work for a traffic shaper...)

I am talking about Arm's core design, according to wikipedia the design of the A53 (of which the MT7986A sports 4) is from 2012. I am not saying the MT7986A is as old an design, but one of its core (pun intended) components is a bit long in the tooth...

Impressive if true, however I have my reservations... about this. Caveat, above 1 Gbps cake defaults to not split GSO/GRO style meta packets which can reduce the packet rate considerably depending on how mant meta packets are in play.

By clicking the 7th icon from the left, you can upload images to the forum, far more convenient than having to look at uploads somewhere else...

1 Like

But these do not actually look bad, in both cases latencies came a bit down. Now if we can make sure your CPUs do not get overloaded this might work out pretty nicely.

I agree, but I know that the router can handle more than that, with QoS in the original firmware it was 0 in both at maximum speed.

I understand, but I have no idea how to change this, I'm just starting with openwrt.
If it's something very complicated, I might settle for going back to the original firmware if I still can.

searching I found the irqbalance package, installed and activated it, there was a minimal improvement, I don't know how to proceed to configure it in the best way.

cat /etc/config/irqbalance
config irqbalance 'irqbalance'
        option enabled '1'

        # Level at which irqbalance partitions cache domains.
        # Default is 2 (L2$).
        #option deepestcache '2'

        # The default value is 10 seconds
        #option interval '10'

        # Specify excluded cpulist
        #option banned_cpulist '0'

        # List of IRQ's to ignore
        #list banirq '36'
        #list banirq '69'

Changed ethernet adapter here...

cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 11:    1186363     408459     207554    1219719     GICv3  30 Level     arch_timer
 14:          0          0          0          0     GICv3 142 Level     wdt_bark
 25:          0          0          0          0   mt-eint   9 Edge      keys
 26:          0          0          0          0   mt-eint  10 Edge      keys
 82:         26          0          0          0   mt-eint  66 Level     mt7530
117:          0          0          0          0     GICv3 148 Level     10320000.crypto
118:          0          0          0          0     GICv3 149 Level     10320000.crypto
119:          0          0          0          0     GICv3 150 Level     10320000.crypto
120:          0          0          0          0     GICv3 151 Level     10320000.crypto
121:         12          0          0          0     GICv3 155 Level     ttyS0
122:      46629          0          0          0     GICv3 172 Level     1100a000.spi
123:      31986          0          0          0     GICv3 173 Level     1100b000.spi
130:        156    1744578          0          0     GICv3 229 Level     15100000.ethernet
**131:         60          0          0    1010152     GICv3 230 Level     15100000.ethernet**
133:     725234          0          0          0     GICv3 245 Level     mt7915e
137:          0          4          0          0    mt7530   1 Edge      mt7530-0:01
138:          0         16          0          0    mt7530   2 Edge      mt7530-0:02
139:          0          3          0          0    mt7530   3 Edge      mt7530-0:03
140:          0          3          0          0    mt7530   4 Edge      mt7530-0:04
IPI0:      2628       3706       3839       5379       Rescheduling interrupts
IPI1:    609911     468180     888354     756302       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:         0          0          0          0       IRQ work interrupts

But here looks like the same:

cat /proc/softirqs
                    CPU0       CPU1       CPU2       CPU3
          HI:          0          0          0          0
       TIMER:      29947      44400      93299      38965
      NET_TX:    1018886     269259      61005    1096610
      NET_RX:     528689     112234      20410     417882
       BLOCK:          0          0          0          0
    IRQ_POLL:          0          0          0          0
     TASKLET:    1679034     487803     147400     577468
       SCHED:      75653      86685     113822      56199
     HRTIMER:          0          0          0          0
         RCU:      40343      47263      45285      26925

This is already the first step, the next step is to enable packet steering (which allows moving the cake/qdisc processing to other CPUs than CPU0).

That is somewhat out of reach, in the default configuration, cake/fq_codel allow up to 5ms of standing queue before they engage, so as a consequence one needs to expect a latency increase in the order of 5-10ms under load... one can configure a tighter number here but at the cost that longer RTT flows will get less throughput...
Also keep in mind that modern browsers are not a high quality measurement environment and hence the results need to be taken as indicators only and not as precise data. E.g. in your Waveform test in the download latency plot we see two samples with ~320ms delay, these are almost guaranteed to be caused by your browser and likely do not reflect what happened over the network.

1 Like

I don't know how to do this, I give up. Thanks.

As I said, I am on and off and not always on-line.
I think to enable packet-steering you should add the following line:

	option packet_steering '1'

to the config globals 'globals' section in /etc/config/network.

Then to test whether it worked copy and paste the following into a ssh session on onto the router and then copy and paste the output:

for file in /sys/class/net/*
do
echo $file RX rps_cpus
cat $file"/queues/rx-0/rps_cpus"
echo $file TX xps_cpus
cat $file"/queues/tx-0/xps_cpus"
done

to see what stuck...

root@OpenWrt:~# for file in /sys/class/net/*
> do
> echo $file RX rps_cpus
> cat $file"/queues/rx-0/rps_cpus"
> echo $file TX xps_cpus
> cat $file"/queues/tx-0/xps_cpus"
> done
/sys/class/net/br-lan RX rps_cpus
0
/sys/class/net/br-lan TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/eth0 RX rps_cpus
f
/sys/class/net/eth0 TX xps_cpus
f
/sys/class/net/ifb4wan RX rps_cpus
0
/sys/class/net/ifb4wan TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lan2 RX rps_cpus
0
/sys/class/net/lan2 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lan3 RX rps_cpus
0
/sys/class/net/lan3 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lan4 RX rps_cpus
0
/sys/class/net/lan4 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lo RX rps_cpus
0
/sys/class/net/lo TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/phy0-ap0 RX rps_cpus
f
/sys/class/net/phy0-ap0 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/phy1-ap0 RX rps_cpus
f
/sys/class/net/phy1-ap0 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/wan RX rps_cpus
0
/sys/class/net/wan TX xps_cpus
cat: read error: No such file or directory

Okay, I think 0 means packet steering is disabled...

Did you edit /etc/config/network?

If yes, please try to reboot the router (or try /etc.init.d/network restart EDIT: don't, this is completely wrong, see below) and then rerun the above command...

EDIT: /etc/hotplug.d/net/20-smp-packet-steering seems to be the right thing here, sorry for bringing

Yes, i edited and Reboot in web interface, put It in network globals,

I reboot again.

I find this in other topic, same case here:

root@OpenWrt:~# /etc/init.d/packet_steering restart
sh: write error: No such file or directory
sh: write error: No such file or directory
root@OpenWrt:~# wifi down
root@OpenWrt:~# /etc/init.d/packet_steering restart
root@OpenWrt:~# wifi up

I'm looking for information about packet steering not working. Kernel problem?

root@OpenWrt:~# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd25:808f:6518::/48'
        option packet_steering '1'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config device
        option name 'wan'
        option macaddr '24:cf:24:28:18:d7'

config interface 'wan'
        option device 'wan'
        option proto 'dhcp'

config interface 'wan6'
        option device 'wan'
        option proto 'dhcpv6'
root@OpenWrt:~# for file in /sys/class/net/*
> do
> echo $file RX rps_cpus
> cat $file"/queues/rx-0/rps_cpus"
> echo $file TX xps_cpus
> cat $file"/queues/tx-0/xps_cpus"
> done
/sys/class/net/br-lan RX rps_cpus
0
/sys/class/net/br-lan TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/eth0 RX rps_cpus
f
/sys/class/net/eth0 TX xps_cpus
f
/sys/class/net/ifb4wan RX rps_cpus
0
/sys/class/net/ifb4wan TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lan2 RX rps_cpus
0
/sys/class/net/lan2 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lan3 RX rps_cpus
0
/sys/class/net/lan3 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lan4 RX rps_cpus
0
/sys/class/net/lan4 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/lo RX rps_cpus
0
/sys/class/net/lo TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/phy0-ap0 RX rps_cpus
f
/sys/class/net/phy0-ap0 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/phy1-ap0 RX rps_cpus
f
/sys/class/net/phy1-ap0 TX xps_cpus
cat: read error: No such file or directory
/sys/class/net/wan RX rps_cpus
0
/sys/class/net/wan TX xps_cpus
cat: read error: No such file or directory