Netgear R7800 exploration (IPQ8065, QCA9984)

The L2 fix and new cpufreq driver are approved and waiting to be merged

3 Likes

Seems to be wrong, I also do not see them on K4.19 master builds. Instead, wifi seems to be on 45 and 46, as mentioned in posts below. But changing assignment for 45 and 46 is not allowed for some reason. Do not know why 28 and 29 were in Kong builds (I only recently started using CLI and learning/checking about what does what, before it was just copy in forum, paste in Luci, so I do not have more info).

For me this is currently mostly playing and exploring, as, it seems, R7800 is more or less able to handle my not-so-fast line speed even with SQM cake on. However, I have not yet compared if irqbalance maybe gave some noticeable improvements. Lately the router throughput seems better to me, but this may as well be just some improvements gained from moving to master branch (?). I will compare throughly one day (this or next week) and then give feedback. So far though seems that I might have to agree, that these are actually only small tweaks and improvements and do not actually change much.

What would you say, does it make sense to keep these in rc.local? I'm wondering if there really is any measureable improvement from just setting lower priority for two processes?

Those processes are competing for CPU with dnsmasq, stubby, hostapd, and the likes so it does make sense to lower their priorities.

They have been merged today.

1 Like

Does not look like all of the commits from your PR have been merged: is there a reason for that? Just curious.

? what commit has not being merged ?

Don't think it matter much... but if you really want all the oomph out of the router there's no reason to remove it.
Here are the corrected scripts:

# There is no need for collectd to run above nice == 19
if ! `grep "NICEPRIO=19" /etc/init.d/collectd`; then
   sed -i 's/^NICEPRIO.*/NICEPRIO=19/g' /etc/init.d/collectd
   # Restart does not pick up the above change right away
   (sleep 300 ; /etc/init.d/collectd stop; sleep 15; /etc/init.d/collectd start) &
fi

# There is no need for uhttpd to run above nice == 19
if ! `grep "nice -n 19" /etc/init.d/uhttpd`; then
   sed -i "s/procd_set_param command/procd_set_param command nice -n 19/g" /etc/init.d/uhttpd
   # Restart does not pick up the above change right away
   (sleep 300 ; /etc/init.d/uhttpd stop; sleep 15; /etc/init.d/uhttpd start) &
fi

Also here are the correct IRQ tweaks for 4.19 (since setting IRQs for wifi doesn't work when I write this).

# bind eth0 and eth1 to different cpu cores for even distribution, IRQ31 - WAN, IRQ32 - LAN
echo 2 > /proc/irq/31/smp_affinity
echo 1 > /proc/irq/32/smp_affinity

# set adm dma to use cpu core 2, 
echo 2 > /proc/irq/30/smp_affinity

And for future reference, here are the settings for wifi:

# CURRENTLY DOES NOT WORK NEEDS GIC-0 IRQ mode to work!  IRQ45 - 5Ghz, IRQ46 - 2.6Ghz
#echo 1 > /proc/irq/45/smp_affinity
#echo 2 > /proc/irq/46/smp_affinity

Nvm, I am seeing things...

@ansuel: are you planning to work on more things soon that I can test? Or is it better to switch back to master now?

I'm now away from the router... Will put more work on half January... So yes you can switch back to master :wink:
Next step will be ad fab scaling and l2 volt scaling

1 Like

Ok, thanks and enjoy the holidays

FWIW, I had a random reboot with 4.19, running hnyman's build r11734-b085e0586f-20191220. Any way to make the logs persistent? Though when it reboots it may not even get a chance to log anything.

Thanks for the good work. Excited for the upcoming changes!

You could login to the router and run logread -f in a terminal like putty until the router crashes.

Or mount a usb drive or stick and point the log to it, it also seems to support remote logging.
See here:

@facboy i can confirm that the fab scaling works well and doesn't cause any performance degradation.
I'm now refactoring the l2 patch with voltage scaling.


Ok this is the results... Notice that lower block value cause problem due to scaling latency...

root@No-Lag-Router:~# ./mbw 64
Long uses 4 bytes. Allocating 2*16777216 elements = 134217728 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 10 runs per test.
0       Method: MEMCPY  Elapsed: 0.08472        MiB: 64.00000   Copy: 755.465 MiB/s
1       Method: MEMCPY  Elapsed: 0.08543        MiB: 64.00000   Copy: 749.143 MiB/s
2       Method: MEMCPY  Elapsed: 0.08488        MiB: 64.00000   Copy: 753.979 MiB/s
3       Method: MEMCPY  Elapsed: 0.08457        MiB: 64.00000   Copy: 756.814 MiB/s
4       Method: MEMCPY  Elapsed: 0.08510        MiB: 64.00000   Copy: 752.048 MiB/s
5       Method: MEMCPY  Elapsed: 0.08507        MiB: 64.00000   Copy: 752.313 MiB/s
6       Method: MEMCPY  Elapsed: 0.08977        MiB: 64.00000   Copy: 712.957 MiB/s
7       Method: MEMCPY  Elapsed: 0.08408        MiB: 64.00000   Copy: 761.198 MiB/s
8       Method: MEMCPY  Elapsed: 0.08500        MiB: 64.00000   Copy: 752.985 MiB/s
9       Method: MEMCPY  Elapsed: 0.08458        MiB: 64.00000   Copy: 756.707 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.08532        MiB: 64.00000   Copy: 750.131 MiB/s
0       Method: DUMB    Elapsed: 0.36912        MiB: 64.00000   Copy: 173.385 MiB/s
1       Method: DUMB    Elapsed: 0.36403        MiB: 64.00000   Copy: 175.809 MiB/s
2       Method: DUMB    Elapsed: 0.43266        MiB: 64.00000   Copy: 147.921 MiB/s
3       Method: DUMB    Elapsed: 0.36768        MiB: 64.00000   Copy: 174.063 MiB/s
4       Method: DUMB    Elapsed: 0.41557        MiB: 64.00000   Copy: 154.004 MiB/s
5       Method: DUMB    Elapsed: 0.36457        MiB: 64.00000   Copy: 175.551 MiB/s
6       Method: DUMB    Elapsed: 0.36460        MiB: 64.00000   Copy: 175.537 MiB/s
7       Method: DUMB    Elapsed: 0.48031        MiB: 64.00000   Copy: 133.248 MiB/s
8       Method: DUMB    Elapsed: 0.40230        MiB: 64.00000   Copy: 159.085 MiB/s
9       Method: DUMB    Elapsed: 0.38821        MiB: 64.00000   Copy: 164.857 MiB/s
AVG     Method: DUMB    Elapsed: 0.39491        MiB: 64.00000   Copy: 162.064 MiB/s
0       Method: MCBLOCK Elapsed: 0.09626        MiB: 64.00000   Copy: 664.859 MiB/s
1       Method: MCBLOCK Elapsed: 0.08948        MiB: 64.00000   Copy: 715.220 MiB/s
2       Method: MCBLOCK Elapsed: 0.08416        MiB: 64.00000   Copy: 760.456 MiB/s
3       Method: MCBLOCK Elapsed: 0.08446        MiB: 64.00000   Copy: 757.710 MiB/s
4       Method: MCBLOCK Elapsed: 0.08461        MiB: 64.00000   Copy: 756.430 MiB/s
5       Method: MCBLOCK Elapsed: 0.08506        MiB: 64.00000   Copy: 752.437 MiB/s
6       Method: MCBLOCK Elapsed: 0.08684        MiB: 64.00000   Copy: 737.013 MiB/s
7       Method: MCBLOCK Elapsed: 0.08562        MiB: 64.00000   Copy: 747.480 MiB/s
8       Method: MCBLOCK Elapsed: 0.08513        MiB: 64.00000   Copy: 751.827 MiB/s
9       Method: MCBLOCK Elapsed: 0.08458        MiB: 64.00000   Copy: 756.662 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.08662        MiB: 64.00000   Copy: 738.859 MiB/s

The best way is to configure syslogd on any of your LAN machines (available for bot Linux and Win). Plus obviously you can connect to serial if you believe any logs wouldn't make it out of the network interface in case of crush.

If someone wants to test...
fab scaling + l2 volt scaling... as usual it must not cause any performance degradation...
Patchset:
https://github.com/Ansuel/openwrt/compare/f8424b1b...0a160310.patch

FYI, patch does not appy on master...

checking file target/linux/ipq806x/patches-4.19/0055-cpufreq-dt-Add-L2-frequency-scaling-support.patch
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED
checking file target/linux/ipq806x/files-4.19/arch/arm/boot/dts/qcom-ipq8064.dtsi
Hunk #1 succeeded at 543 (offset -3 lines).

mhh trying to make a pr to github master doesn't tell me any conflict. Can you retry or use the diff patch?

https://github.com/Ansuel/openwrt/compare/f8424b1b...0a160310.diff

@shelterx
You can't patch "dry-run" test a patch series where several patches modify the same file. As non patching is actually done, the second patch sees the unmodified file, not the one it needs.

1 Like