Our FreeBSD router was getting taxed at 15Gbps -- started to drop packets, customer complaints, etc.
I upgrade to 13.1, turned on hyperthreading, and upped the hw.cxgbe queues to 16 from 8 and the box is working fine. I'm not sure if this is solely due to the hyperthreading of if the reworked networking stack in 13.1 is that much better. Posting good news here for other that may have throughput issues.
Also interesting, in the attached graphs, note the interrupts tanked when bandwidth and load went up in FreeBSD 12 - that is when we started to get packet loss.
Background: 3 chelsio cards, dual decacore CPU
t6nex0: <Chelsio T62100-LP-CR> numa-domain 0 on pci10
t5nex0: <Chelsio T540-LP-CR> numa-domain 1 on pci14
t5nex1: <Chelsio T540-LP-CR> numa-domain 1 on pci16
CPU: Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
We have a chelsio_affinity script that is 'numa aware' to bind the interrupts to different CPU cores. Without the hyperthreading, we could only support 8 queues per port, now with hyperthreading, we can do 16 queues (power of 2 and less than number of cores on a cpu).
We used the https://calomel.org/freebsd_network_tuning.html advice to not use hyperthreading in FreeBSD 12.
I upgrade to 13.1, turned on hyperthreading, and upped the hw.cxgbe queues to 16 from 8 and the box is working fine. I'm not sure if this is solely due to the hyperthreading of if the reworked networking stack in 13.1 is that much better. Posting good news here for other that may have throughput issues.
Also interesting, in the attached graphs, note the interrupts tanked when bandwidth and load went up in FreeBSD 12 - that is when we started to get packet loss.
Background: 3 chelsio cards, dual decacore CPU
t6nex0: <Chelsio T62100-LP-CR> numa-domain 0 on pci10
t5nex0: <Chelsio T540-LP-CR> numa-domain 1 on pci14
t5nex1: <Chelsio T540-LP-CR> numa-domain 1 on pci16
CPU: Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
We have a chelsio_affinity script that is 'numa aware' to bind the interrupts to different CPU cores. Without the hyperthreading, we could only support 8 queues per port, now with hyperthreading, we can do 16 queues (power of 2 and less than number of cores on a cpu).
We used the https://calomel.org/freebsd_network_tuning.html advice to not use hyperthreading in FreeBSD 12.