Continue to main subject , I bought new modem with PCIe mode for this modem 5G
I did some test (PCIe ) between MCUZONE and OpenWrt
MCUZONE PCIe
i'm getting 800mb/s to 900mb/s like USB Speeds (before)
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 (low utilization)
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
echo f > /sys/class/net/usb0/queues/rx-0/rps_cpus
only CPU 0 is running
I did one thing made a big different on speed and utilization
echo 2 > /proc/irq/116/smp_affinity
Where CPU 1 gave a good speeds
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 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 OpenWrt use all CPUs ? only CPU 0 will work .... echo f > /proc/irq/116/smp_affinity
root@OpenWrt:~# echo 3f > /sys/class/net/usb0/queues/rx-0/rps_cpus
ash: write error: Value too large for data type
root@OpenWrt:~# echo f > /sys/class/net/usb0/queues/rx-0/rps_cpus <<<---- (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
When I tried with ChatGPT 4 ,each step with sharing results with GPT ... he/it felt there is something wrong with Kernel or Network Drivers