mlx5 irq
Hans Petter Selasky
hps at selasky.org
Thu Oct 1 08:11:25 UTC 2020
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
More information about the freebsd-net
mailing list