The L2 fix and new cpufreq driver are approved and waiting to be merged
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.
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
Next step will be ad fab scaling and l2 volt scaling
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.