<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:38:34 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-10831] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 11 seconds</title>
                <link>https://jira.whamcloud.com/browse/LU-10831</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Our development filesystem lquake is currently running Lustre 2.10 for testing. We&apos;ve begun noticing the following chatter in the console logs of jet (the host of lquake):&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;2018-03-16 09:10:18 [62861.230420] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 9 seconds
2018-03-16 09:10:18 [62861.242715] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Skipped 9 previous similar messages
2018-03-16 09:20:24 [63467.220203] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 3 seconds
2018-03-16 09:20:24 [63467.232510] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Skipped 9 previous similar messages
2018-03-16 09:30:30 [64073.210011] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 0 seconds
2018-03-16 09:30:30 [64073.222312] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Skipped 11 previous similar messages
2018-03-16 09:40:48 [64691.199577] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 9 seconds
2018-03-16 09:40:48 [64691.211874] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Skipped 10 previous similar messages
2018-03-16 09:50:54 [65297.189318] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 2 seconds
2018-03-16 09:50:54 [65297.201613] LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Skipped 11 previous similar messages&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;These messages began showing up when lquake was mounted by Lustre 2.10 clients and those clients had the same chatter in their console logs.&lt;/p&gt;

&lt;p&gt;Currently, lquake is being mounted by Lustre 2.8 clients and jet is still seeing the chatter in its console logs.&lt;/p&gt;

&lt;p&gt;Is this a symptom of a larger problem and how does this impact performance of the filesystem? Clients appear to be able to use the filesystem without any problems.&lt;/p&gt;</description>
                <environment></environment>
        <key id="51459">LU-10831</key>
            <summary>LNet: 15206:0:(o2iblnd_cb.c:3192:kiblnd_check_conns()) Timed out tx for 172.19.1.53@o2ib100: 11 seconds</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="1" iconUrl="https://jira.whamcloud.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="sharmaso">Sonia Sharma</assignee>
                                    <reporter username="dinatale2">Giuseppe Di Natale</reporter>
                        <labels>
                            <label>llnl</label>
                    </labels>
                <created>Tue, 20 Mar 2018 22:12:29 +0000</created>
                <updated>Sat, 19 May 2018 00:12:25 +0000</updated>
                                            <version>Lustre 2.10.3</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                            <comments>
                            <comment id="224095" author="pjones" created="Wed, 21 Mar 2018 11:13:51 +0000"  >&lt;p&gt;Sonia&lt;/p&gt;

&lt;p&gt;Can you please advise&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="224286" author="sharmaso" created="Thu, 22 Mar 2018 17:08:39 +0000"  >&lt;p&gt;Hi Giuseppe,&lt;/p&gt;


&lt;p&gt;Can you turn on neterror logging so we see the LNet errors if there any?&lt;/p&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;lctl set_param debug=+net
lctl set_param debug=+neterror
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This timeout in kiblnd_check_conns() though might be because of some hardware issue. Can you check the health of IB on the node&#160; 172.19.1.53@o2ib100?&lt;/p&gt;</comment>
                            <comment id="224303" author="ofaaland" created="Thu, 22 Mar 2018 18:40:43 +0000"  >&lt;p&gt;Joe,&lt;/p&gt;

&lt;p&gt;The version affected says 2.10.0.&#160; Is that correct?&#160; I thought we were testing a later 2.10 tag.&lt;/p&gt;

&lt;p&gt;Please provide specific version information for Sonia so she can look at the relevant code.&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;</comment>
                            <comment id="224306" author="dinatale2" created="Thu, 22 Mar 2018 19:03:09 +0000"  >&lt;p&gt;Opps, I selected the wrong version. Our version is based on 2.10.3 (lustre-2.10.3_3.chaos-1.ch6.x86_64).&lt;/p&gt;</comment>
                            <comment id="224311" author="ofaaland" created="Thu, 22 Mar 2018 19:10:40 +0000"  >&lt;p&gt;Code is at &lt;a href=&quot;https://github.com/LLNL/lustre/commits/2.10.3-llnl&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/LLNL/lustre/commits/2.10.3-llnl&lt;/a&gt; essentially 2.10.3 release plus a few unrelated patches.&#160;&lt;/p&gt;</comment>
                            <comment id="224345" author="dinatale2" created="Thu, 22 Mar 2018 22:49:39 +0000"  >&lt;p&gt;So I looked into this some more. One of our router nodes was down according to all of jet&apos;s nodes (I checked /proc/sys/lnet/routers). The particular router had a value for deadline assigned on all jet nodes. I got the router up and the console log messages stopped. I glanced at the code and when a deadline is passed, it appears that connections are closed with ETIMEDOUT. But if those connections end up closed, why do we keep hitting the deadline and seeing the message?&lt;/p&gt;

&lt;p&gt;I also decided to take down another router that jet connects with and according to /proc/sys/lnet/routers the connection is down, but there is no deadline. How are these deadlines assigned?&lt;/p&gt;</comment>
                            <comment id="224349" author="simmonsja" created="Thu, 22 Mar 2018 22:59:26 +0000"  >&lt;p&gt;Is this a eth0 --&amp;gt; IB type of setup or all IB?&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="224358" author="ofaaland" created="Fri, 23 Mar 2018 00:47:41 +0000"  >&lt;p&gt;No tcp.&#160; opal188 is a router, and has an mlx5 interface and an omnipath interface.&lt;/p&gt;

&lt;p&gt;jet1 (MDS, complainer) mlx5 &amp;lt;===&amp;gt; 172.19.1.53@o2ib100 mlx5&#160;&#8211; opal188 (router)&#160;&#8211;&#160;192.168.128.188@o2ib18 omnipath &amp;lt;===&amp;gt; compute nodes&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="224558" author="sharmaso" created="Mon, 26 Mar 2018 18:01:55 +0000"  >&lt;p&gt;Hi Giuseppe,&lt;/p&gt;

&lt;p&gt;This deadline is set when a tx is queued on a queue to be sent. It is set using the kiblnd tunable - kib_timeout in kiblnd_queue_tx_locked(). Here&#160;&lt;/p&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;tx-&amp;gt;tx_deadline = jiffies +
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; msecs_to_jiffies(*kiblnd_tunables.kib_timeout *
      &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;MSEC_PER_SEC);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This deadline remains active until a confirmation is received for the tx to be completed.&#160;&lt;/p&gt;

&lt;p&gt;The message we see in the logs comes from the below code in kiblnd_check_conns()&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;list_for_each_entry_safe(tx, tx_tmp, &amp;amp;peer_ni-&amp;gt;ibp_tx_queue, tx_list) {
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (cfs_time_aftereq(jiffies, tx-&amp;gt;tx_deadline)) {
&#160; &#160; &#160; &#160;          CWARN(&lt;span class=&quot;code-quote&quot;&gt;&quot;Timed out tx &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; %s: %lu seconds\n&quot;&lt;/span&gt;,
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;   libcfs_nid2str(peer_ni-&amp;gt;ibp_nid),
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; cfs_duration_sec(jiffies - tx-&amp;gt;tx_deadline));
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; list_move(&amp;amp;tx-&amp;gt;tx_list, &amp;amp;timedout_txs);
 &#160; &#160; &#160; &#160;}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Here the txs on peer_ni-&amp;gt;ibp_tx_queue are the txs waiting for a connection and they are scanned to check for the ones whose deadline has passed, That;s when we see the &quot;timed out&quot; messages in the logs&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="224619" author="dinatale2" created="Tue, 27 Mar 2018 17:08:11 +0000"  >&lt;p&gt;Hi Sonia,&lt;/p&gt;

&lt;p&gt;Thanks for the reply and explanation. In the situation where a route has a deadline set and is considered down, we are seeing these messages flood our logs and they don&apos;t seem to stop. Is that the expected behavior? It makes me think that connections that should&apos;ve been timed out, aren&apos;t in fact being timed out.&lt;/p&gt;

&lt;p&gt;Looking at kiblnd_check_conns(), it seems that it eventually attempts to close connections that timed out. Does that mean that these messages should stop once that connection closes?&lt;/p&gt;

&lt;p&gt;And where do the deadlines on the routes get assigned considering deadline is present in /proc/sys/lnet/routers?&lt;/p&gt;</comment>
                            <comment id="226637" author="ofaaland" created="Tue, 24 Apr 2018 16:48:04 +0000"  >&lt;p&gt;Sonia,&lt;/p&gt;

&lt;p&gt;It seems like the queued tx&apos;s should have all timed out eventually, and new tx&apos;s should all have been queued for the other connection to the router that was still up, and so - eventually - all of these timeout messages would stop.&lt;/p&gt;

&lt;p&gt;Is that correct?&#160; How can we determine how long that time period should be?&#160; Minutes?&#160; Hours?&lt;/p&gt;

&lt;p&gt;thanks&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="226685" author="sharmaso" created="Wed, 25 Apr 2018 05:01:39 +0000"  >&lt;p&gt;Hi Olaf/Giuseppe&lt;/p&gt;

&lt;p&gt;First my apologies for the delay in replying to this.&lt;/p&gt;

&lt;p&gt;To answer Giuseppe&apos;s question -&lt;br/&gt;
 what we see as deadline on the routers in /proc/sys/lnet/routers/&#160; is the value set for the module param - lnet router_ping_timeout and its default value is 50. This parameter specifies a timeout for the router checker when it checks live or dead routers. If the router checker does not get a reply message from the router within router_ping_timeout seconds, it considers the router to be down.&lt;/p&gt;

&lt;p&gt;&#160;In lnet/lnet/router.c, we have this&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;1079 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (rtr-&amp;gt;lpni_ping_deadline == 0) {
1080 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rtr-&amp;gt;lpni_ping_deadline =
1081 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; cfs_time_shift(router_ping_timeout);
1082 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now the question is why and when the router is being marked as down. Can you please collect net error logs like I asked in my earlier comment?&lt;/p&gt;

&lt;p&gt;Also, I am thinking this router being marked down might be related to &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10707&quot; title=&quot;TCP eth routed LNet traffic broken&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10707&quot;&gt;&lt;del&gt;LU-10707&lt;/del&gt;&lt;/a&gt;. But you mentioned that the other router is not having this issue. right?&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;For the queued TXs being timed out in kiblnd_check_conns(), it looks like the timed out TXs are&#160; queued on this list - timedout_txs. And this is later checked for here -&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;3236 &#160; &#160; &#160; &#160; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!list_empty(&amp;amp;timedout_txs))
3237 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; kiblnd_txlist_done(&amp;amp;timedout_txs, -ETIMEDOUT);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Here the timedout TXs are eventually unmapped and marked done in kiblnd_tx_done() and lnet_finalize() is called ultimately signaling completion.&lt;/p&gt;

&lt;p&gt;The deadline for these TXs to timeout is set in&#160;kiblnd_queue_tx_locked() using the module param - kib_timeout. So it will be after this time-period that a queued TXs waiting for a connection will timeout&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;tx-&amp;gt;tx_deadline = jiffies +
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; msecs_to_jiffies(*kiblnd_tunables.kib_timeout *
      &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;MSEC_PER_SEC);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;For the particular connection timing out and being closed, this is checked below and then later is closed-&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;3208 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; timedout = kiblnd_conn_timed_out_locked(conn);
3209 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!sendnoop &amp;amp;&amp;amp; !timedout) {
3210 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; spin_unlock(&amp;amp;conn-&amp;gt;ibc_lock);
3211 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;code-keyword&quot;&gt;continue&lt;/span&gt;;
3212 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; }
3213
3214 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (timedout) {
3215 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; CERROR(&lt;span class=&quot;code-quote&quot;&gt;&quot;Timed out RDMA with %s (%lu): &quot;&lt;/span&gt;
3216&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &lt;span class=&quot;code-quote&quot;&gt;&quot;c: %u, oc: %u, rc: %u\n&quot;&lt;/span&gt;,
3217&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; libcfs_nid2str(peer_ni-&amp;gt;ibp_nid),
3218&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; cfs_duration_sec(cfs_time_current() -
3219 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; peer_ni-&amp;gt;ibp_last_alive),
&#160;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;br/&gt;
 Are&#160; &#8220;Timed out RDMA&#8221; messages also seen in the logs?&lt;/p&gt;

&lt;p&gt;Again, the neterror logs can give more information regarding the network related errors that are resulting in the issue.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzzumn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>