Skip to content

Commit

Permalink
patch: allow bonding slaves from different numa nodes
Browse files Browse the repository at this point in the history
Note the patch may have a negative influnce on performance.
It's not a good practice to bonding slaves across numa nodes.

Signed-off-by: ywc689 <[email protected]>
  • Loading branch information
ywc689 committed Aug 2, 2021
1 parent 4eebe78 commit c68bd02
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 8e66b7600c7d8d0e59dd85565986436c0e03a2c8 Mon Sep 17 00:00:00 2001
From 09760dd24ceaa9a6ce2435cdf9105e1da5d95616 Mon Sep 17 00:00:00 2001
From: huangyichen <[email protected]>
Date: Thu, 1 Jul 2021 21:21:16 +0800
Subject: [PATCH 1/5] kni: use netlink event for multicast (driver part)
Subject: [PATCH 1/6] kni: use netlink event for multicast (driver part)

Kni driver sends netlink event every time hw-multicast list updated by
kernel, the user kni app should capture the event and update multicast
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 0ef2e126c8ca9b4a246f680a2a5110b734e9782b Mon Sep 17 00:00:00 2001
From 60e1eb0a50fc10ca69bcdc4148fdec35576eeedc Mon Sep 17 00:00:00 2001
From: huangyichen <[email protected]>
Date: Thu, 1 Jul 2021 21:23:50 +0800
Subject: [PATCH 2/5] pdump: change dpdk-pdump tool for dpvs
Subject: [PATCH 2/6] pdump: change dpdk-pdump tool for dpvs

---
app/pdump/main.c | 167 ++++++++++++++++++++++++++++++++++++++++---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 446e9d2ae65c25ca382323bdd7cdec765f357886 Mon Sep 17 00:00:00 2001
From c9763a0b83bdf0fbf9a5a0ca8c96d999cca62196 Mon Sep 17 00:00:00 2001
From: huangyichen <[email protected]>
Date: Thu, 1 Jul 2021 21:24:47 +0800
Subject: [PATCH 3/5] [for debug only] enable dpdk eal memory debug
Subject: [PATCH 3/6] [for debug only] enable dpdk eal memory debug

The patch is used for memory debug. To use the patch, configure meson with option
-Dc_args="-DRTE_MALLOC_DEBUG" when building dpdk. For example,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From fc81d45d6bf23bd6d9b0e7eb9fdc7fe41b559e65 Mon Sep 17 00:00:00 2001
From 54aad262b48f5904d7f1688b56526908151f5574 Mon Sep 17 00:00:00 2001
From: huangyichen <[email protected]>
Date: Fri, 2 Jul 2021 11:55:47 +0800
Subject: [PATCH 4/5] ixgbe_flow: patch ixgbe fdir rte_flow for dpvs
Subject: [PATCH 4/6] ixgbe_flow: patch ixgbe fdir rte_flow for dpvs

1. Ignore fdir flow rule priority attribute.
2. Use different fdir soft-id for flow rules configured for the same queue.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From ad725a88c0acbd795646cf1d6280c5de7a012044 Mon Sep 17 00:00:00 2001
From 0d0ba57681393cd9c11a0ac069c6f676b9f34707 Mon Sep 17 00:00:00 2001
From: huangyichen <[email protected]>
Date: Fri, 2 Jul 2021 11:57:03 +0800
Subject: [PATCH 5/5] Fix bonding mode 4 problem caused by LACP failure.
Subject: [PATCH 5/6] Fix bonding mode 4 problem caused by LACP failure.

The problem is disscussed in Issue #725 of iqiyi/dpvs in detail.
https://github.com/iqiyi/dpvs/issues/725
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
From e6d97675f818b6225209a3cada1e53a0756daedb Mon Sep 17 00:00:00 2001
From: wencyu <[email protected]>
Date: Mon, 2 Aug 2021 13:52:24 +0800
Subject: [PATCH 6/6] bonding: allow slaves from different numa nodes

Note the patch may have a negative influnce on performance.
It's not a good practice to bonding slaves across numa nodes.

Signed-off-by: wencyu <[email protected]>
---
drivers/net/bonding/rte_eth_bond_pmd.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 057b1ad..53f8ba3 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1762,7 +1762,14 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,

errval = rte_eth_rx_queue_setup(slave_eth_dev->data->port_id, q_id,
bd_rx_q->nb_rx_desc,
- rte_eth_dev_socket_id(slave_eth_dev->data->port_id),
+ // In spite of performance problem, bonding slaves had better to support
+ // slaves from different numa nodes. Considering that numa node on which
+ // the resources of bonding port is allocated from is specified by
+ // rte_eth_bond_create() at bonding creation, the slave's queue_setup
+ // would fail if specified with the slave's numa node id that is different
+ // from the one of the bonding port. See rte_eth_dma_zone_reserve() for
+ // details.
+ SOCKET_ID_ANY,
&(bd_rx_q->rx_conf), bd_rx_q->mb_pool);
if (errval != 0) {
RTE_BOND_LOG(ERR,
@@ -1778,7 +1785,14 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,

errval = rte_eth_tx_queue_setup(slave_eth_dev->data->port_id, q_id,
bd_tx_q->nb_tx_desc,
- rte_eth_dev_socket_id(slave_eth_dev->data->port_id),
+ // In spite of performance problem, bonding slaves had better to support
+ // slaves from different numa nodes. Considering that numa node on which
+ // the resources of bonding port is allocated from is specified by
+ // rte_eth_bond_create() at bonding creation, the slave's queue_setup
+ // would fail if specified with the slave's numa node id that is different
+ // from the one of the bonding port. See rte_eth_dma_zone_reserve() for
+ // details.
+ SOCKET_ID_ANY,
&bd_tx_q->tx_conf);
if (errval != 0) {
RTE_BOND_LOG(ERR,
--
1.8.3.1

0 comments on commit c68bd02

Please sign in to comment.