NanoPI R6S with OpenWRT

I see that you assigned

7654 3210 <- CPU #s
0000 0010 - 1 slow core on both eth0 rx tx queues
0001 0000 - 1 fast cores on eth1 rx queue
0010 0000 - 1 fast cores on eth1 tx queue
0100 0000 - 1 fast cores on eth2 rx queue
1000 0000 - 1 fast cores on eth2 rx queue

0000 0001 - 1 slow core on eth0 IRQ
0000 0100 - 1 slow core on eth1 IRQ
0000 1000 - 1 slow core on eth2 IRQ

I did a comparison between mods here: https://youtu.be/RhVtOiiB2Yk

I like yours since you basically almost assigned a single core per task which helps me isolate things.

Yours had most of the load was on CPU6 (a fast core). Because my connection is asymmetrical at around 1400mbps down / 35 mbps up. It makes sense that the utilization is on CPU6 was high since it's the core assigned to the eth2 rx queue

Now I think to optimize for my assymetrical connection I should focus the big cores on ingress queues and put slow cores on all egress queues.

Maybe yours is more optimal for a symmetrical connection?

As for the IRQ assignments I'll have to figure that one out.

On the mods I had most of the load was on CPU3 a slower core and it's unclear why since it's not isolated.

Thanks for sharing! I'm going to play around with it for a bit! Maybe...

	set_interface_core 1 "eth0"
	echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus
	echo 2 > /sys/class/net/eth0/queues/tx-0/xps_cpus
	set_interface_core 4 "eth1-0"
	set_interface_core 4 "eth1-16"
	set_interface_core 4 "eth1-18"
	echo 10 > /sys/class/net/eth1/queues/rx-0/rps_cpus
	echo 20 > /sys/class/net/eth1/queues/tx-0/xps_cpus
	set_interface_core 8 "eth2-0"
	set_interface_core 8 "eth2-16"
	set_interface_core 8 "eth2-18"
	echo c0 > /sys/class/net/eth2/queues/rx-0/rps_cpus
	echo 80 > /sys/class/net/eth2/queues/tx-0/xps_cpus
	;;

Here I replace 40 with c0 because of my asymmetrical connection CPU6 could use help from CPU7?

1 Like