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?