Whamcloud - gitweb
LU-15136 socklnd: default conns_per_peer to 0 19/45319/7
authorSerguei Smirnov <ssmirnov@whamcloud.com>
Thu, 21 Oct 2021 02:09:06 +0000 (19:09 -0700)
committerOleg Drokin <green@whamcloud.com>
Wed, 3 Nov 2021 02:38:57 +0000 (02:38 +0000)
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.

Test-parameters: trivial testlist=sanity-lnet

Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Fixes: c44afcfb72 ("LU-12815 socklnd: set conns_per_peer based on link speed")
Change-Id: Ie6e76eaee8693472384cce362b394b216142884e
Reviewed-on: https://review.whamcloud.com/45319
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/include/lnet/lib-lnet.h
lnet/klnds/socklnd/socklnd_modparams.c

index 45389e0..cc2f3e1 100644 (file)
@@ -79,7 +79,7 @@ extern struct lnet the_lnet;                  /* THE network */
 #define DEFAULT_CREDITS         256
 
 /* default number of connections per peer */
-#define DEFAULT_CONNS_PER_PEER  1
+#define DEFAULT_CONNS_PER_PEER  0
 
 #ifdef HAVE_KERN_SOCK_GETNAME_2ARGS
 #define lnet_kernel_getpeername(sock, addr, addrlen) \
index 967575a..cfc758a 100644 (file)
@@ -191,6 +191,10 @@ static int ksocklnd_ni_get_eth_intf_speed(struct lnet_ni *ni)
 
        DECLARE_CONST_IN_IFADDR(ifa);
 
+       /* 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);
@@ -246,11 +250,13 @@ 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;
 #ifdef HAVE_ETHTOOL_LINK_SETTINGS
        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);
 #endif