SQM Limits download to 150Mbit instead of 250Mbit


I am using a ZyXEL NBG6817 (same platform as R7800) with WilhelmTel fiber in germany. Actually my download is limited to 250Mbit by WilhelmTel which I can reach without SQM enabled. If I enable SQM (Download to 250000/upload to 45000) I cannot get over 150Mbit with fast.com. If I disable the upload restriction fast.com can get up to 220Mbit but not higher in download. Any ideas about this? CPU is at 70% on one core so it seems not the restriction. Using OpenWrt 21.02.0 r16279-5cc0535800.

Also found something here as it seems a CPU issue somehow...: SQM/QoS can saturate the CPU/is this expected or can the code be improved? - #36 by darksky As my system uses 50% of the CPU it must be the same if it runs single threaded...


SQM is single-threaded (so only one of your cores can be used for it) and very CPU intensive, ipq8065 simply is not fast enough to sustain those speeds with SQM enabled.

With SQM, you're reaching this territory much earlier than without it.

1 Like

Have a look at the FAQ entry " Measured goodput in speed tests with SQM is considerably lower than without" which describes how to instal and use htop to get per-CPU load statistics that can help figuring out whether a multi-core CPU runs into overload.

Would irqbalance help in this situation?

1 Like

Solutions to the out-of-CPU cycles problem depend a bit on the individual situation, but often irqbalance or manual assignment of IRQs to different CPUs can be part of a remedy.

Have you tried any of the tweaks in the R7800 performance thread? Specifically, start with setting just the performance scheduler (via ssh) to see whether that helps. The default ip806x scheduler settings are frequently problematic in that the CPU frequency doesn't ramp up quickly enough.

1 Like

Will try this firmware: https://github.com/ACwifidude/openwrt/tree/kernel5.4-nss-qsdk10.0/bin/targets/ipq806x/generic

It includes NSS feature which looks like a offloading of SQM to the hardware. With my Zyxel and dual boot firmware it should be secure to give it a try without risks.

1 Like

Definitely get htop, and turn on the detailed CPU time in the settings, as well as look at how the irq's are falling on the cores, with cat /proc/interrupts.

Another thing to try is the "packet steering" feature. Carefully hidden :wink: under the Network, Interfaces, Global network options, tabs... it enables some kind of steering that seems different than what irqbalance does. I'm guessing it sets some of the manual IRQ or TX/RX IRQ assignments. I really wish there was a way to "read" what Luci commands do in CLI terms... but that's another thread...

It's in 21.02.1, I forget if it showed up in 21.02.0 or not. I found it worked better at spreading the load than irqbalance in my tiny x86 box router. It actually spread the load on a big speedtest pretty evenly across the 4 cores. I imagine, that's not cause it magically made Cake multi threaded, but was able to spread the network IO load across the cores. Best irqbalance seemed to do is move the two eth IRQ's to different cores, but not move the TX/RX, for only some gain. YMMV, of course.

NSS support in @ACwifidude fork made it. Hopefully it will be merged in the main codeline sometimes. With hardware offloading I see 3% CPU usage and 1% SIRQ on the router. So it seems the right solution for this...


This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.