Request Support For OpenWrt Kernel 6.6.35 Router (5G/4G modems)
by KFO from LinuxQuestions.org on (#6P15W)
I bought new modem with PCIe mode for this modem 5G (RM551) Quectel / and Fibocom FM190W-GL
MCUZONE , its normal board without system .... you can say its M.2 board to run modems for network and depending on modem system ...
Speed of USB 800mb/s
Speed of PCIE 830 mb/s
-------------------------------------------------------------------
Where i'm using OpenWrt system with Kernel 6.6.35 on Board Banana BPI-R4 ( where this board supporting PCIe and USB 3.2 for 5G/4G modems)
Speed of USB 300-450 mb/s
Speed of PCIE 500 to 600 mb/s
My Subject on OpenWrt :
https://forum.openwrt.org/t/openwrt-...ssue/200941/43
------------------------------------------------------------------------
Most of people on OpenWrt and other developers told me mostly this issue related to Kernel and drivers
I did some test (PCIe ) between MCUZONE Board (no driver - driver free) and OpenWrt board (Which OpenWrt using Kernel 6.6.35)
MCUZONE PCIe
i'm getting 800mb/s to 900mb/s
image
Where The PCIe for OpenWrt
i'm getting 550 mb/s
So I started searching to know why ? I found CPU utilization ( when Its running for all CPUs 0,1,2 & 3) IRQ .......only CPU 0 is running and reaching up to 75% utilization where other CPUs 1,2 and 3 are almost sleeping (:arrow_down:low utilization) :expressionless:
So I tried to let all CPUs run at same time on PCIe mode but no luck ... still system is assigning load to CPU 0 also when I activated IRQ package to disrepute load but no luck
Also with this
Quote:
only CPU 0 is running
I did one thing made a big different on speed and utilization
Quote:
Where CPU 1 gave a good speeds
Image for test:
https://imgur.com/a/sZLj8rS
Quote:
Quote:
CPU 1 and 2 are giving a higher speeds
CPU 0 and 4 are giving a lower speeds
I appreciate answering on these questions:
How I can let the system use all CPUs ? only CPU 0 will work ....
echo f > /proc/irq/116/smp_affinity
Quote:
<<<---- (This only worked , where only CPU 0 will run )
How I can let OpenWrt use CPU 1 and 2 same time ?
echo 6 > /proc/irq/116/smp_affinity
I tried this echo and didn't work for dual cores (1 & 2) only core 1 was running and core 2 idle
----------------------------------------------------------------------------------------------------------
I tried Taskset with support of GPT he gave me the steps
https://poe.com/s/w6MwE08lT88d7ndcmdQZ
but I couldn't see any different on utilization of CPUs
https://imgur.com/a/QlNfKU4
Maybe the selected PID was not related to network of modem ...
Note: `echo 2 > /proc/irq/116/smp_affinity` this command added to startup of system to avoid utilization of CPU 0 and focusing on CPU 1 **to avoid PCIe speed limitation**
MCUZONE , its normal board without system .... you can say its M.2 board to run modems for network and depending on modem system ...
Speed of USB 800mb/s
Speed of PCIE 830 mb/s
-------------------------------------------------------------------
Where i'm using OpenWrt system with Kernel 6.6.35 on Board Banana BPI-R4 ( where this board supporting PCIe and USB 3.2 for 5G/4G modems)
Speed of USB 300-450 mb/s
Speed of PCIE 500 to 600 mb/s
My Subject on OpenWrt :
https://forum.openwrt.org/t/openwrt-...ssue/200941/43
------------------------------------------------------------------------
Most of people on OpenWrt and other developers told me mostly this issue related to Kernel and drivers
I did some test (PCIe ) between MCUZONE Board (no driver - driver free) and OpenWrt board (Which OpenWrt using Kernel 6.6.35)
MCUZONE PCIe
i'm getting 800mb/s to 900mb/s
image
Where The PCIe for OpenWrt
i'm getting 550 mb/s
So I started searching to know why ? I found CPU utilization ( when Its running for all CPUs 0,1,2 & 3) IRQ .......only CPU 0 is running and reaching up to 75% utilization where other CPUs 1,2 and 3 are almost sleeping (:arrow_down:low utilization) :expressionless:
So I tried to let all CPUs run at same time on PCIe mode but no luck ... still system is assigning load to CPU 0 also when I activated IRQ package to disrepute load but no luck
Also with this
Quote:
echo f > /sys/class/net/usb0/queues/rx-0/rps_cpus |
I did one thing made a big different on speed and utilization
Quote:
echo 2 > /proc/irq/116/smp_affinity |
Where CPU 1 gave a good speeds
Image for test:
https://imgur.com/a/sZLj8rS
Quote:
root@OpenWrt:~# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 11: 64144 84579 104371 92990 GICv3 30 Level arch_timer 16: 0 0 0 0 mt-eint 1 Edge sfp2-tx-fault 17: 0 0 0 0 mt-eint 2 Edge sfp2-los 27: 0 0 0 0 mt-eint 12 Edge 11230000.mmc cd 29: 0 0 0 0 mt-eint 14 Edge gpio-keys 69: 0 0 0 0 mt-eint 54 Edge sfp1-los 84: 0 0 0 0 mt-eint 69 Edge sfp1-tx-fault 97: 0 0 0 0 mt-eint 82 Edge sfp1-mod-def0 98: 0 0 0 0 mt-eint 83 Edge sfp2-mod-def0 99: 16 0 0 0 GICv3 155 Level ttyS0 102: 14309 0 0 0 GICv3 172 Level 11007000.spi 104: 1026399 2105448 2378418 0 GICv3 229 Level 15100000.ethernet 105: 615057 1210835 0 1210491 GICv3 230 Level 15100000.ethernet 106: 31 0 0 0 GICv3 168 Level 11003000.i2c 107: 18 0 0 0 GICv3 177 Level 11005000.i2c 108: 0 0 0 0 GICv3 170 Level 1100a000.lvts 109: 0 0 0 0 GICv3 142 Level wdt_bark 110: 3963 353 0 0 GICv3 175 Level 11230000.mmc 111: 5 0 0 0 GICv3 241 Level mt7530 112: 0 0 0 0 mt7530 0 Edge mt7530-0:00 113: 0 0 0 0 mt7530 1 Edge mt7530-0:01 114: 3 0 0 0 mt7530 2 Edge mt7530-0:02 115: 2 0 0 0 mt7530 3 Edge mt7530-0:03 116: 0 3754489 0 0 GICv3 204 Level xhci-hcd:usb1 IPI0: 112362 8141 7366 7552 Rescheduling interrupts IPI1: 5522892 352854 2373571 1606272 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 |
20:32:31 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 20:32:32 all 0.00 0.00 3.98 0.00 5.22 15.17 0.00 0.00 0.00 75.62 20:32:32 0 0.00 0.00 14.85 0.00 1.98 7.92 0.00 0.00 0.00 75.25 20:32:32 1 0.00 0.00 0.96 0.00 18.27 31.73 0.00 0.00 0.00 49.04 20:32:32 2 0.00 0.00 0.00 0.00 0.00 19.19 0.00 0.00 0.00 80.81 20:32:32 3 0.00 0.00 0.00 0.00 0.00 1.02 0.00 0.00 0.00 98.98 |
CPU 0 and 4 are giving a lower speeds
I appreciate answering on these questions:
How I can let the system use all CPUs ? only CPU 0 will work ....
echo f > /proc/irq/116/smp_affinity
Quote:
root@OpenWrt:~# echo f > /sys/class/net/usb0/queues/rx-0/rps_cpus |
How I can let OpenWrt use CPU 1 and 2 same time ?
echo 6 > /proc/irq/116/smp_affinity
I tried this echo and didn't work for dual cores (1 & 2) only core 1 was running and core 2 idle
----------------------------------------------------------------------------------------------------------
I tried Taskset with support of GPT he gave me the steps
https://poe.com/s/w6MwE08lT88d7ndcmdQZ
but I couldn't see any different on utilization of CPUs
https://imgur.com/a/QlNfKU4
Maybe the selected PID was not related to network of modem ...
Note: `echo 2 > /proc/irq/116/smp_affinity` this command added to startup of system to avoid utilization of CPU 0 and focusing on CPU 1 **to avoid PCIe speed limitation**