Awful SQM performance on GeForce NOW

I recently asked for router recommendations focused on SQM to play GeForce NOW (cloud video gaming) with my 75/8 Mb/s VDSL2 connection. And on the advice of @eginnc, I bought Xiaomi 4A Giga and installed OpenWRT. (Luckily I was sent the product manufactured in March 2021, otherwise I wouldn't have been able to flash OpenWRT. See here.)

My setup: I have Zyxel DX3200-B0 VDSL modem in Bridge mode and Xiaomi Router 4A Giga is connected to it's LAN1 (RFC 1483) as PPoE-WAN. Everything is disabled on the modem-side (wifi, dhcp, nat, firewalls, qos stuff. It's acting as a dumb modem.)

I have installed and configured SQM as shown here. And set to %88 of my actual line speed of both download and upload. But my gaming experience is awful. Only I am connected to the router. No downloads in the background. Any tips on how to improve SQM?

SQM config pictures (Sorry, I am a GUI guy.)



No game GeForce Now test: 35-36ms
In-game values:



3374490250653114-j1P76apz

Are you using wifi?

What are results over ethernet?

What results do you get when you disable SQM?

1 Like

Yes, 5GHz.

Don't know, did not test. I do not really prefer wired connection...

DSLreports with recommended settings (16/16, hi-res bufferbloat stuff.)

Fast.com default test

Fast.com 16 thread long test (270mb)

Please test this. WiFi can be qquite weird so excluding WiFi at least as a test seems helpful. In case it is an WiFi issue you will not be able to fix it in SQM.
Can you please post the following output from your routers command line:

  1. tc -s qdisc # without GeForce NOW active and ideally shortly after a fresh restart of SQM (/etc/init.d/sqm stop ; /etc/init.d/sqm start to clear the statistics counters)
    EDIT: fixed a typo it is /etc not /eyc
  2. play a while on GeForce NOW (and just report how well it plays and the in-game values)
  3. tc -s qdisc # ideally while the game is still on.

Then we can see where this leads.

1 Like

I understand. I will hook up my laptop to router and test it tomorrow. Wish my room had eth wiring...
WiFi signal is strong though. I am getting the maximum WiFi rate of my router: 866/866 (Mbps)

These are on WiFi 5Ghz.

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 fq_codel 0: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 831123870 bytes 1491038 pkt (dropped 0, overlimits 0 requeues 14)
 backlog 0b 0p requeues 14
  maxpacket 1518 drop_overlimit 0 new_flow_count 56120 ecn_mark 0
  new_flows_len 0 old_flows_len 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 noqueue 0: dev lan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev wan root refcnt 2
 Sent 0 bytes 0 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 wlan0 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev pppoe-wan root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 408542775 bytes 1196238 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 17904 drop_overlimit 0 new_flow_count 205595 ecn_mark 0
  new_flows_len 0 old_flows_len 0
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 fq_codel 0: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 838152434 bytes 1514788 pkt (dropped 0, overlimits 0 requeues 14)
 backlog 0b 0p requeues 14
  maxpacket 1518 drop_overlimit 0 new_flow_count 56120 ecn_mark 0
  new_flows_len 0 old_flows_len 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 noqueue 0: dev lan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev wan root refcnt 2
 Sent 0 bytes 0 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 wlan0 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev pppoe-wan root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 414952372 bytes 1219892 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 17904 drop_overlimit 0 new_flow_count 205622 ecn_mark 0
  new_flows_len 0 old_flows_len 0

In-game GIF
GeForceNOW_dO2kdOa4t0

Just noticed that SQM stayed disabled because /etc/init.d/sqm start did not start it somehow...

Yes, that is odd. Can you post the output of:
SQM_DEBUG=1 SQM_VERBOSITY_MAX=11 /etc/init.d/sqm stop ; SQM_DEBUG=1 SQM_VERBOSITY_MAX=11 /etc/init.d/sqm start

That might help figuring out what blocks sqm here.

root@OpenWrt:~# SQM_DEBUG=1 SQM_VERBOSITY_MAX=11 /etc/init.d/sqm stop ; SQM_DEB
UG=1
SQM: Acquired run lock
/usr/lib/sqm/run.sh: line 57: can't create : nonexistent directory
SQM: Stopping SQM on wan
root@OpenWrt:~# SQM_VERBOSITY_MAX=11 /etc/init.d/sqm start
SQM: Acquired run lock
SQM:
SQM: Sun Mar 20 00:18:11 +03 2022: Starting.
SQM: Starting SQM script: piece_of_cake.qos on wan, in: 69696 Kbps, out: 6969 Kbps
SQM: fn_exists: function candidate name: sqm_start
SQM: fn_exists: TYPE_OUTPUT: sqm_start: not found
SQM: fn_exists: return value: 1
SQM: Using generic sqm_start_default function.
SQM: fn_exists: function candidate name: sqm_prepare_script
SQM: fn_exists: TYPE_OUTPUT: sqm_prepare_script is a function
SQM: fn_exists: return value: 0
SQM: sqm_start_default: starting sqm_prepare_script
SQM: cmd_wrapper: COMMAND: /sbin/ip link add name SQM_IFB_230be type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name SQM_IFB_230be type ifb
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc replace dev SQM_IFB_230be root cake
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc qdisc replace dev SQM_IFB_230be root cake
SQM: QDISC cake is useable.
SQM: cmd_wrapper: COMMAND: /sbin/ip link set dev SQM_IFB_230be down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev SQM_IFB_230be down
SQM: cmd_wrapper: COMMAND: /sbin/ip link delete SQM_IFB_230be type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete SQM_IFB_230be type ifb
SQM: cmd_wrapper: COMMAND: /sbin/ip link add name SQM_IFB_78470 type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name SQM_IFB_78470 type ifb
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc replace dev SQM_IFB_78470 root cake
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc qdisc replace dev SQM_IFB_78470 root cake
SQM: QDISC cake is useable.
SQM: cmd_wrapper: COMMAND: /sbin/ip link set dev SQM_IFB_78470 down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev SQM_IFB_78470 down
SQM: cmd_wrapper: COMMAND: /sbin/ip link delete SQM_IFB_78470 type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete SQM_IFB_78470 type ifb
SQM: sqm_start_default: Starting piece_of_cake.qos
SQM: ifb associated with interface wan:
SQM: Currently no ifb is associated with wan, this is normal during starting of the sqm system.
SQM: cmd_wrapper: COMMAND: /sbin/ip link add name ifb4wan type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name ifb4wan type ifb
SQM: fn_exists: function candidate name: egress
SQM: fn_exists: TYPE_OUTPUT: egress is a function
SQM: fn_exists: return value: 0
SQM: egress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc del dev wan root
SQM: cmd_wrapper: tc: FAILURE (2): /sbin/tc qdisc del dev wan root
SQM: cmd_wrapper: tc: LAST ERROR: Error: Cannot delete qdisc with handle of zero.
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cake link layer adjustments:  overhead 34 mpu 0
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc add dev wan root cake bandwidth 6969kbit overhead 34 mpu 0 besteffort
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc qdisc add dev wan root cake bandwidth 6969kbit overhead 34 mpu 0 besteffort
SQM: sqm_start_default: egress shaping activated
SQM: cmd_wrapper: COMMAND: /sbin/ip link add name SQM_IFB_eb79c type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name SQM_IFB_eb79c type ifb
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc replace dev SQM_IFB_eb79c ingress
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc qdisc replace dev SQM_IFB_eb79c ingress
SQM: QDISC ingress is useable.
SQM: cmd_wrapper: COMMAND: /sbin/ip link set dev SQM_IFB_eb79c down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev SQM_IFB_eb79c down
SQM: cmd_wrapper: COMMAND: /sbin/ip link delete SQM_IFB_eb79c type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete SQM_IFB_eb79c type ifb
SQM: fn_exists: function candidate name: ingress
SQM: fn_exists: TYPE_OUTPUT: ingress is a function
SQM: fn_exists: return value: 0
SQM: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc del dev wan handle ffff: ingress
SQM: cmd_wrapper: tc: FAILURE (2): /sbin/tc qdisc del dev wan handle ffff: ingress
SQM: cmd_wrapper: tc: LAST ERROR: Error: Invalid handle.
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc add dev wan handle ffff: ingress
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc qdisc add dev wan handle ffff: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc del dev ifb4wan root
SQM: cmd_wrapper: tc: FAILURE (2): /sbin/tc qdisc del dev ifb4wan root
SQM: cmd_wrapper: tc: LAST ERROR: Error: Cannot delete qdisc with handle of zero.
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cake link layer adjustments:  overhead 34 mpu 0
SQM: cmd_wrapper: COMMAND: /sbin/tc qdisc add dev ifb4wan root cake bandwidth 69696kbit overhead 34 mpu 0 besteffort wash
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc qdisc add dev ifb4wan root cake bandwidth 69696kbit overhead 34 mpu 0 besteffort wash
SQM: cmd_wrapper: COMMAND: /sbin/ip link set dev ifb4wan up
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4wan up
SQM: cmd_wrapper: COMMAND: /sbin/tc filter add dev wan parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4wan
SQM: cmd_wrapper: tc: SUCCESS: /sbin/tc filter add dev wan parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4wan
SQM: sqm_start_default: ingress shaping activated
SQM: piece_of_cake.qos was started on wan successfully

Okay that looks better, what does tc -s qdisc show now?

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 fq_codel 0: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 905230829 bytes 1670053 pkt (dropped 0, overlimits 0 requeues 14)
 backlog 0b 0p requeues 14
  maxpacket 1518 drop_overlimit 0 new_flow_count 56120 ecn_mark 0
  new_flows_len 0 old_flows_len 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 noqueue 0: dev lan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8021: dev wan root refcnt 2 bandwidth 6969Kbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 34
 Sent 18142553 bytes 43104 pkt (dropped 1024, overlimits 35919 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 80644b of 4Mb
 capacity estimate: 6969Kbit
 min/max network layer size:           16 /    1500
 min/max overhead-adjusted size:       50 /    1534
 average network hdr offset:           14

                  Tin 0
  thresh       6969Kbit
  target            5ms
  interval        100ms
  pk_delay       7.38ms
  av_delay       2.78ms
  sp_delay         13us
  backlog            0b
  pkts            44128
  bytes        19686275
  way_inds           17
  way_miss          159
  way_cols            0
  drops            1024
  marks               0
  ack_drop            0
  sp_flows            1
  bk_flows            1
  un_flows            0
  max_len          1514
  quantum           300

qdisc ingress ffff: dev wan parent ffff:fff1 ----------------
 Sent 99268707 bytes 76473 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 wlan0 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev pppoe-wan root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 37390885 bytes 86778 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 11936 drop_overlimit 0 new_flow_count 27889 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc cake 8022: dev ifb4wan root refcnt 2 bandwidth 69696Kbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms noatm overhead 34
 Sent 100325787 bytes 76464 pkt (dropped 9, overlimits 54937 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 99840b of 4Mb
 capacity estimate: 69696Kbit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       80 /    1534
 average network hdr offset:           14

                  Tin 0
  thresh      69696Kbit
  target            5ms
  interval        100ms
  pk_delay        929us
  av_delay         32us
  sp_delay         10us
  backlog            0b
  pkts            76473
  bytes       100339329
  way_inds         1910
  way_miss          166
  way_cols            0
  drops               9
  marks               0
  ack_drop            0
  sp_flows            1
  bk_flows            1
  un_flows            0
  max_len          1514
  quantum          1514

Oops, sorry my typo, that needs to be /etc/init.d/sqm start, so etc not eyc, will fix it in the original post as well, but this is on me....

Not at all. I have already noticed it at first and entered as separate codes:

/etc/init.d/sqm stop
/etc/init.d/sqm start

Maybe I shouldn't have separated them?

No these are two separate commands so issuing them separately one after the other should be fine.

All right, here's the log of tc -s qdisc I took in-game:

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 fq_codel 0: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1518 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 933575649 bytes 1761479 pkt (dropped 0, overlimits 0 requeues 14)
 backlog 0b 0p requeues 14
  maxpacket 1518 drop_overlimit 0 new_flow_count 56120 ecn_mark 0
  new_flows_len 0 old_flows_len 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 noqueue 0: dev lan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc cake 8021: dev wan root refcnt 2 bandwidth 6969Kbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 34
 Sent 46121669 bytes 134530 pkt (dropped 1841, overlimits 87453 requeues 0)
 backlog 0b 0p requeues 0
 memory used: 108310b of 4Mb
 capacity estimate: 6969Kbit
 min/max network layer size:           16 /    1500
 min/max overhead-adjusted size:       50 /    1534
 average network hdr offset:           14

                  Tin 0
  thresh       6969Kbit
  target            5ms
  interval        100ms
  pk_delay       2.04ms
  av_delay         97us
  sp_delay         16us
  backlog            0b
  pkts           136371
  bytes        48890918
  way_inds         4172
  way_miss          990
  way_cols            0
  drops            1841
  marks               0
  ack_drop            0
  sp_flows            2
  bk_flows            1
  un_flows            0
  max_len          1514
  quantum           300

qdisc ingress ffff: dev wan parent ffff:fff1 ----------------
 Sent 880995212 bytes 721318 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 wlan0 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan1 root refcnt 2
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc fq_codel 0: dev pppoe-wan root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 4Mb ecn drop_batch 64
 Sent 64563654 bytes 178705 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  maxpacket 11936 drop_overlimit 0 new_flow_count 48501 ecn_mark 0
  new_flows_len 0 old_flows_len 0
qdisc cake 8022: dev ifb4wan root refcnt 2 bandwidth 69696Kbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms noatm overhead 34
 Sent 891035801 bytes 721278 pkt (dropped 37, overlimits 572060 requeues 0)
 backlog 3355b 3p requeues 0
 memory used: 99840b of 4Mb
 capacity estimate: 69696Kbit
 min/max network layer size:           46 /    1500
 min/max overhead-adjusted size:       80 /    1534
 average network hdr offset:           14

                  Tin 0
  thresh      69696Kbit
  target            5ms
  interval        100ms
  pk_delay       2.75ms
  av_delay        577us
  sp_delay         17us
  backlog         3355b
  pkts           721318
  bytes       891093664
  way_inds         1934
  way_miss         1009
  way_cols            0
  drops              37
  marks               0
  ack_drop            0
  sp_flows            3
  bk_flows            1
  un_flows            0
  max_len          1514
  quantum          1514

And in-game ping went up to 60ms.

It looks like you have set your SQM down/up speed to 69696/6969

But in your reply to bill888 to post your speed test without SQM, your DSL reports speed test without SQM shows your actual line speed is 48.9/7.53. There might be a clue there.

It is possible your VDSL2 speed is not as fast as advertised by your ISP and that your actual line speed is only around 48.9/7.53. Try setting your down/up speed to 43000/6600 and see if that helps your latency.

You might also try layer cake instead of piece of cake - I found that worked better for me when I had a bonded VDSL2 line.

Finally, if this improves things, try slowly increasing the speeds set in SQM until things start getting worse, and then back your speeds down a bit from there to find the sweet spot. Setting your SQM speeds does take a bit of trial and error. Also, I would not try to tune things to more than 2 of 3 significant figures. There's too much variability in line speed and server speed and WiFi and .... you get the idea...it's false precision.

Hope this helps.

Edit: Three other thoughts:

  1. Are you using at least 40MHz channel width on your 5GHz WiFi? If not, try 40 MHz or 80 MHz channel width to improve your WiFi throughput and latency.
  2. Some of your upload speeds are coming back as low as 4.7 or 6.8 on the Fast.com tests. Try lowering your upload SQM speed all the way down to 4000, then slowly raise it from there until latency starts getting worse and back down from there to find the sweet spot.
  3. Software flow offloading works in snapshot (but not 21.02) - you could try installing snapshot and ticking the "software flow offloading" box under the Network>Firewall menu. Do not do this if you are not comfortable with installing luci from the command line though - snapshot does not come with Luci by default. This doesn't help a huge amount since all your SQM traffic can't be offloaded, but it can free up a few more CPU cycles. I've noticed ~5% to 10% improvement with CAKE.
2 Likes

Good point, also a reason to get a speedtest with the laptop connected via an ethernet cable, the bottleneck might actually be the WLAN (or might not, IMHO worth figuring out).

As a rule of thumb, I tend to recommend to run a few speedtests to reliable servers then pick "consensus" values for up- and downstream (comparing a few speedtests, ignoring outliers and trying to "eyeball" a central value) and plug these goodput numbers into SQM which will interpret these as gross rates resulting in an acceptable rate reduction so traffic shaping can actually work.
For example on my link the following is the relationship between shaper rate and speedtest goodput:
100 * ((1500-8-20-20-12)/(1500+26)) = 94.36%
so taking the goodput already gives 5% slack for the shaper (which might not be ideal, but should be a decent starting point).

Also regarding your Link, could you post what your modem reports as sync values, please?

piece_of_cake and layer_cake will only differ if your network differentially uses DSCP to mark packets, other than that layer_cake simply is a tiny bit more CPU-hungry...

+1 for the rest of the recommendation, spot on!

1 Like

I think both DSLreports and Waveform (calculated 10 MB/s) tests are inaccurate with speed results.

Here you can see my line statistics:

I think nperf is the most accurate with speed tests among all of them.

I will begin with that level and increase to find my sweet spot.

Will also try that and report back.

And I am using TP-Link Archer T4U Plus with my laptop.

Sync:
77.92/8.224

so the theoretical upper limit for speedtest goodput from that sync, assuming VDSL2/PTM, PPPoE, IPv4, TCP and MTU 1500 is:
77.92 * (64/65) * ((1500-8-20-20)/(1500+22)) = 73.19 Mbps
8.224 * (64/65) * ((1500-8-20-20)/(1500+22)) = 7.73 Mbps

But your ISP might still employ a traffic shaper on his side restricting your link below the sync, most ISPs actually do, because DSLAMs/MSANs are not great placed to encounter congestion at....

Speedtest all tend to be "accurate" but not all of the test the speed across the link you are most interested in, for an internet access link it seems obvious to just trust the one reporting the highest rates, but that has the issues that quite a number of Speedtests report goodput well above the theoretical maximum as calculated above.... (speedof.me is notorious for that).

Regarding WiFI I still would like ot see a wired test.... it could be that WiFI puts an additional load on your router's CPUs so that there is not enough left for SQM, but that is not very likely from what you posted so far.

1 Like

In the unlikely event this is what is going on, you could try installing irqbalance and change SQM to fq_codel/simple.qos. CAKE loads up one CPU thread; whereas fq_codel can make better use of all the CPU cores/threads. fq_codel also requires less CPU in general. If it has the CPU it needs CAKE can shave a few more ms of latency off your statistics, but fq_codel is pretty good too.

After you install irqbalance, you need to edit the file /etc/config/irqbalance to turn it on and reboot (or start it from the command line).

Also, installing and running htop in a command prompt window while you test SQM can give you some insights on CPU utilization.

1 Like

Wired tests with current SQM config: Cake | Piece of Cake | 69696 / 6969

Fast.com default test

Fast.com custom test
fast

Dslreports.com custom test with recommended settings
dslreports

In-game test
https://s7.gifyu.com/images/qpf0WJZWVb.gif

Wired connection has improved the game experience. But I still get ping spikes up to 50ms.