[lustre-devel] [PATCH 13/15] lnet: socklnd: default conns_per_peer to 0

James Simmons jsimmons at infradead.org
Mon Nov 8 07:07:41 PST 2021


From: Serguei Smirnov <ssmirnov at whamcloud.com>

Setting conns_per_peer to 0 triggers socklnd to choose the
(heuristically) optimal setting for the interface given its speed.
Make 0 the default for socklnd conns_per_peer.

Fixes: 6374d25cfe ("lnet: socklnd: set conns_per_peer based on link speed")
WC-bug-id: https://jira.whamcloud.com/browse/LU-15136
Lustre-commit: 30a028e2ee2b3eead ("U-15136 socklnd: default conns_per_peer to 0")
Signed-off-by: Serguei Smirnov <ssmirnov at whamcloud.com>
Reviewed-on: https://review.whamcloud.com/45319
Reviewed-by: Andreas Dilger <adilger at whamcloud.com>
Reviewed-by: Chris Horn <chris.horn at hpe.com>
Reviewed-by: James Simmons <jsimmons at infradead.org>
Tested-by: Andreas Dilger <adilger at whamcloud.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
 include/linux/lnet/lib-lnet.h              |  2 +-
 net/lnet/klnds/socklnd/socklnd_modparams.c | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/include/linux/lnet/lib-lnet.h b/include/linux/lnet/lib-lnet.h
index 890f61a..104c98d 100644
--- a/include/linux/lnet/lib-lnet.h
+++ b/include/linux/lnet/lib-lnet.h
@@ -87,7 +87,7 @@
 #define DEFAULT_CREDITS	256
 
 /* default number of connections per peer */
-#define DEFAULT_CONNS_PER_PEER	1
+#define DEFAULT_CONNS_PER_PEER	0
 
 int choose_ipv4_src(u32 *ret, int interface, u32 dst_ipaddr, struct net *ns);
 
diff --git a/net/lnet/klnds/socklnd/socklnd_modparams.c b/net/lnet/klnds/socklnd/socklnd_modparams.c
index 72f9df2..c00ea49 100644
--- a/net/lnet/klnds/socklnd/socklnd_modparams.c
+++ b/net/lnet/klnds/socklnd/socklnd_modparams.c
@@ -163,6 +163,10 @@ static int ksocklnd_ni_get_eth_intf_speed(struct lnet_ni *ni)
 	int intf_idx = -1;
 	int ret = -1;
 
+	/* check if ni has interface assigned */
+	if (!ni->ni_net_ns || !ni->ni_interface)
+		return 0;
+
 	rtnl_lock();
 	for_each_netdev(ni->ni_net_ns, dev) {
 		int flags = dev_get_flags(dev);
@@ -215,10 +219,12 @@ static int ksocklnd_speed2cpp(int speed)
 
 static int ksocklnd_lookup_conns_per_peer(struct lnet_ni *ni)
 {
-	int cpp = DEFAULT_CONNS_PER_PEER;
+	int cpp = 1;
 	int speed = ksocklnd_ni_get_eth_intf_speed(ni);
 
-	CDEBUG(D_NET, "intf %s speed %d\n", ni->ni_interface, speed);
+	if (ni->ni_interface)
+		CDEBUG(D_NET, "intf %s speed %d\n", ni->ni_interface, speed);
+
 	if (speed > 0)
 		cpp = ksocklnd_speed2cpp(speed);
 
-- 
1.8.3.1



More information about the lustre-devel mailing list