1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/ethernet/mellanox/mlx4
Hans Westgaard Ry 79ebfb11fe net/mlx4: Treat VFs fair when handling comm_channel_events
Handling comm_channel_event in mlx4_master_comm_channel uses a double
loop to determine which slaves have requested work. The search is
always started at lowest slave. This leads to unfairness; lower VFs
tends to be prioritized over higher VFs.

The patch uses find_next_bit to determine which slaves to handle.
Fairness is implemented by always starting at the next to the last
start.

An MPI program has been used to measure improvements. It runs 500
ibv_reg_mr, synchronizes with all other instances and then runs 500
ibv_dereg_mr.

The results running 500 processes, time reported is for running 500
calls:

ibv_reg_mr:
             Mod.   Org.
mlx4_1    403.356ms 424.674ms
mlx4_2    403.355ms 424.674ms
mlx4_3    403.354ms 424.674ms
mlx4_4    403.355ms 424.674ms
mlx4_5    403.357ms 424.677ms
mlx4_6    403.354ms 424.676ms
mlx4_7    403.357ms 424.675ms
mlx4_8    403.355ms 424.675ms

ibv_dereg_mr:
             Mod.   Org.
mlx4_1    116.408ms 142.818ms
mlx4_2    116.434ms 142.793ms
mlx4_3    116.488ms 143.247ms
mlx4_4    116.679ms 143.230ms
mlx4_5    112.017ms 107.204ms
mlx4_6    112.032ms 107.516ms
mlx4_7    112.083ms 184.195ms
mlx4_8    115.089ms 190.618ms

Suggested-by: Håkon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Hans Westgaard Ry <hans.westgaard.ry@oracle.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-04-22 14:59:26 -07:00
..
alloc.c mellanox: Switch to bitmap_zalloc() 2019-03-04 10:19:33 -08:00
catas.c mlx4: Split restart_one into two functions 2019-09-13 22:11:14 +02:00
cmd.c net/mlx4: Treat VFs fair when handling comm_channel_events 2021-04-22 14:59:26 -07:00
cq.c net/mlx4: simplify the return expression of mlx4_init_cq_table() 2020-12-09 19:20:46 -08:00
crdump.c net/mlx4_core: Add missing iounmap() in error path 2020-04-25 20:43:56 -07:00
en_clock.c net/mlx4_en: fix overflow in mlx4_en_init_timestamp() 2017-02-26 15:39:43 -05:00
en_cq.c net/mlx4: Use effective interrupt affinity 2020-12-15 16:19:33 +01:00
en_dcb_nl.c net/mlx4_en: Fix mixed PFC and Global pause user control requests 2018-03-27 12:02:30 -04:00
en_ethtool.c net/mlx4_en: update moderation when config reset 2021-03-05 12:42:31 -08:00
en_main.c net/mlx4_en: Use minimal rx and tx ring sizes on kdump kernel 2018-10-09 11:08:48 -07:00
en_netdev.c net/mlx4_en: update moderation when config reset 2021-03-05 12:42:31 -08:00
en_port.c net/mlx4_en: Add physical RX/TX bytes/packets counters 2018-02-27 14:53:26 -05:00
en_port.h net/mlx4_en: Check the enabling pptx/pprx flags in SET_PORT wrapper flow 2017-01-30 15:26:43 -05:00
en_resources.c net/mlx4: Fix endianness issue in qp context params 2017-10-09 10:33:05 -07:00
en_rx.c net, xdp: Introduce xdp_prepare_buff utility routine 2021-01-08 13:39:24 -08:00
en_selftest.c net/mlx4_en: Fix selftest for small MTUs 2017-12-13 16:38:36 -05:00
en_tx.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-12-11 22:29:38 -08:00
eq.c net: mlx: convert tasklets to use new tasklet_setup() API 2020-09-14 13:02:37 -07:00
fw.c net/mlx4_core: Fix init_hca fields offset 2020-11-18 17:46:20 -08:00
fw.h net/mlx4_core: Fix init_hca fields offset 2020-11-18 17:46:20 -08:00
fw_qos.c net/mlx4: fix spelling mistake: "availible" -> "available" 2017-08-16 14:23:45 -07:00
fw_qos.h net/mlx4: Cleanup kernel-doc warnings 2020-11-05 12:09:30 -08:00
icm.c net/mlx4: replace pci_{,un}map_sg with dma_{,un}map_sg 2019-01-07 05:14:17 -08:00
icm.h net/mlx4: Get rid of page operation after dma_alloc_coherent 2019-01-07 05:14:17 -08:00
intf.c net/mlx4: fix spelling mistake: "Inrerface" -> "Interface" and rephrase message 2018-05-23 14:58:10 -04:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
main.c devlink: Add devlink reload limit option 2020-10-09 12:06:52 -07:00
Makefile net/mlx4_core: Add Crdump FW snapshot support 2018-07-12 17:37:13 -07:00
mcg.c net/mlx4: Use fallthrough pseudo-keyword 2020-07-27 13:14:10 -07:00
mlx4.h net/mlx4: Treat VFs fair when handling comm_channel_events 2021-04-22 14:59:26 -07:00
mlx4_en.h net/mlx4_en: update moderation when config reset 2021-03-05 12:42:31 -08:00
mlx4_stats.h net/mlx4_en: Remove unused performance counters 2020-11-20 10:59:39 -08:00
mr.c net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init() 2020-09-01 13:13:15 -07:00
pd.c io-mapping: Specify mapping size for io_mapping_map_wc() 2016-04-28 12:17:32 +01:00
port.c net/mlx4_en: ethtool, Remove unsupported SFP EEPROM high pages query 2019-05-20 11:33:57 -07:00
profile.c net/mlx4_core: Allow MTTs starting at any index 2018-07-25 16:30:38 -07:00
qp.c net/mlx4: Fix irq-unsafe spinlock usage 2018-05-23 15:48:58 -04:00
reset.c
resource_tracker.c net/mlx4_core: Add missed mlx4_free_cmd_mailbox() 2021-02-22 19:08:33 -08:00
sense.c
srq.c net/mlx4: simplify the return expression of mlx4_init_srq_table() 2020-12-10 13:00:51 -08:00