On 2020-10-01 09:39, Michal Vančo via freebsd-net wrote:
Hi

Hi Michal,

I have a server with one Mellanox ConnectX-4 adapter and the following
CPU configuration (SMT disabled):

# dmesg | grep SMP
FreeBSD/SMP: Multiprocessor System Detected: 16 CPUs
FreeBSD/SMP: 2 package(s) x 8 core(s) x 2 hardware threads
FreeBSD/SMP Online: 2 package(s) x 8 core(s)

What I don't understand is the number of IRQs allocated for each mlx5_core:

# vmstat -i | grep mlx5_core
irq320: mlx5_core0                     1          0
irq321: mlx5_core0              18646775         84
irq322: mlx5_core0                    21          0
irq323: mlx5_core0                 97793          0
irq324: mlx5_core0                 84685          0
irq325: mlx5_core0                 89288          0
irq326: mlx5_core0                 93564          0
irq327: mlx5_core0                 86892          0
irq328: mlx5_core0                 99141          0
irq329: mlx5_core0                 86695          0
irq330: mlx5_core0                104023          0
irq331: mlx5_core0                 85238          0
irq332: mlx5_core0                 88387          0
irq333: mlx5_core0              93310221        420

^^^ it appears you have some application which is using a single TCP connection heavily. Then the traffic doesn't get distributed.

irq334: mlx5_core0               1135906          5
irq335: mlx5_core0                 85394          0
irq336: mlx5_core0                 88361          0
irq337: mlx5_core0                 88826          0
irq338: mlx5_core0              17909515         81
irq339: mlx5_core1                     1          0
irq340: mlx5_core1              18646948         84
irq341: mlx5_core1                    25          0
irq342: mlx5_core1                208684          1
irq343: mlx5_core1                 91567          0
irq344: mlx5_core1                 88340          0
irq345: mlx5_core1                 92597          0
irq346: mlx5_core1                 85108          0
irq347: mlx5_core1                 98858          0
irq348: mlx5_core1                 88103          0
irq349: mlx5_core1                104906          0
irq350: mlx5_core1                 84947          0
irq351: mlx5_core1                 99767          0
irq352: mlx5_core1               9482571         43
irq353: mlx5_core1               1724267          8
irq354: mlx5_core1                 96698          0
irq355: mlx5_core1                473324          2
irq356: mlx5_core1                 86760          0
irq357: mlx5_core1              11590861         52

I expected number of IRQs to be equal number of CPUS. According to
Mellanox docs, I should be able to pin each interrupt to specific core
to loadbalance. How can I do this in this case when number of IRQs is
larger than number of cores? Is there any way to lower the number of
interrupts?


You can lower the number of interrupts by changing the coalescing sysctl's in the mce.<N>.conf tree.

dev.mce.0.conf.tx_coalesce_pkts: 32
dev.mce.0.conf.tx_coalesce_usecs: 16
dev.mce.0.conf.rx_coalesce_pkts: 32
dev.mce.0.conf.rx_coalesce_usecs: 3

For example 1024 pkts and 125 us.

And also set the queue size bigger than 1024 pkts:

dev.mce.0.conf.rx_queue_size: 1024
dev.mce.0.conf.tx_queue_size: 1024

--HPS
_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to