<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:30:24 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-9912] fix multiple client mounts with different server timeouts</title>
                <link>https://jira.whamcloud.com/browse/LU-9912</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;If a single client is mounting multiple filesystems, but the servers are configured with different timeouts (e.g. local vs. WAN mounts) then the client will use the timeout value of the most recent filesystem mount.  Since the &lt;tt&gt;obd_timeout&lt;/tt&gt; value is global across all connections, if the most recent mount has a significantly higher timeout than the other filesystems, the client will not ping the servers often enough, resulting in client evictions during periods of inactivity.&lt;/p&gt;

&lt;p&gt;The timeout parameter is currently implemented as a single value for all filesystems currently mounted, but it seems possible to potentially fix this to work better when filesystems with multiple timeouts are mounted. One possibility is to use the minimum timeout set between the multiple filesystem configurations as the client ping interval. Currently, since &lt;a href=&quot;http://review.whamcloud.com/2881&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/2881&lt;/a&gt; the timeout is the maximum value from all different filesystems, which was to fix a problem with timeouts on the MGS. For clients it makes sense to use the minimum timeout between all filesystems mounted.&lt;/p&gt;

&lt;p&gt;Of course, it would be even better if the timeout value in the config was stored on a per-mountpoint or per-import basis, so that it is possible to have different timeouts for local and remote filesystems, or large and small filesystems, or interactive and batch filesystems, etc. I don&apos;t know how easily that would be implemented, but it would be the better long-term solution than a single timeout for the whole client.&lt;/p&gt;</description>
                <environment></environment>
        <key id="47950">LU-9912</key>
            <summary>fix multiple client mounts with different server timeouts</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="flei">Feng Lei </assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                    </labels>
                <created>Thu, 24 Aug 2017 17:43:14 +0000</created>
                <updated>Mon, 8 Jan 2024 23:35:29 +0000</updated>
                                                            <fixVersion>Lustre 2.16.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>9</watches>
                                                                            <comments>
                            <comment id="206372" author="simmonsja" created="Fri, 25 Aug 2017 01:00:50 +0000"  >&lt;p&gt;The most logical place to me to expose this to admins is /sys/fs/lustre/mgc/MGC10.37.248.196@o2ib1/*. We could do a LND type approach. We treat the module parameters as global settings that by default applied to all network interfaces. Admin can configure via DLC each network interface and over ride the network interface values.&lt;/p&gt;</comment>
                            <comment id="208058" author="chunteraa" created="Mon, 11 Sep 2017 15:41:23 +0000"  >&lt;p&gt;Isn&apos;t obd_timeout controlled by adaptive timeouts ?&lt;/p&gt;</comment>
                            <comment id="208066" author="adilger" created="Mon, 11 Sep 2017 16:58:15 +0000"  >&lt;p&gt;Not exactly. Adaptive timeouts keep per-connection values for RPC processing and resends, but &lt;tt&gt;obd_timeout&lt;/tt&gt; is still used for some case if there is no activity or are not directly related to RPC timeouts (e.g. pings when client is idle). &lt;/p&gt;

&lt;p&gt;For this ticket, we don&apos;t need to change the server code, but we should track the ping interval on a per server basis. &lt;/p&gt;</comment>
                            <comment id="208072" author="chunteraa" created="Mon, 11 Sep 2017 17:51:06 +0000"  >&lt;p&gt;Does obd_timeout show up as ptlrpc timeout messages ? &lt;br/&gt;
Any idea what opcodes are reported (eg. 38/MDS_CONNECT or 400/OBD_PING) ?&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;</comment>
                            <comment id="298395" author="adilger" created="Fri, 9 Apr 2021 16:38:02 +0000"  >&lt;p&gt;To make this work properly, I think we should introduce a new device-specific parameter &quot;&lt;tt&gt;&amp;#42;.&amp;#42;.timeout&lt;/tt&gt;&quot; (and equivalent for at_min, timeout, and other global parameters we want to fix), and then allow setting it directly. If the global &lt;tt&gt;timeout&lt;/tt&gt; parameter is sent from the MGS it should only be applied to devices configured by that MGS, possibly tracked by &lt;tt&gt;fsname&lt;/tt&gt; and translated into a glob like &lt;tt&gt;&amp;#42;.&amp;#42;fsname&amp;#42;.timeout&lt;/tt&gt; or equivalent when it is applied.&lt;/p&gt;</comment>
                            <comment id="367782" author="adilger" created="Wed, 29 Mar 2023 20:31:48 +0000"  >&lt;p&gt;This needs a similar change as patch &lt;a href=&quot;https://review.whamcloud.com/45598&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/45598&lt;/a&gt; &quot;&lt;tt&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-15246&quot; title=&quot;Add per device adaptive timeout parameters&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-15246&quot;&gt;&lt;del&gt;LU-15246&lt;/del&gt;&lt;/a&gt; ptlrpc: add per-device adaptive timeout parameters&lt;/tt&gt;&quot; that changes the global &quot;&lt;tt&gt;timeout&lt;/tt&gt;&quot; parameter to be per-device &quot;&lt;tt&gt;&amp;#42;.&amp;lt;fsname&amp;gt;&amp;#42;.timeout&lt;/tt&gt;&quot; parameters.&lt;/p&gt;

&lt;p&gt;Separately, a patch for the MGC to translate config log parameter global settings of &lt;tt&gt;timeout&lt;/tt&gt;, &lt;tt&gt;at_min&lt;/tt&gt;, &lt;tt&gt;at_max&lt;/tt&gt;, &lt;tt&gt;at_history&lt;/tt&gt;, &lt;tt&gt;ldlm_enqueue_min&lt;/tt&gt; to &lt;tt&gt;&amp;#42;.&amp;lt;fsname&amp;gt;&amp;#42;.&amp;lt;param&amp;gt;&lt;/tt&gt; so that they only apply to devices from that filesystem rather than for all filesystems mounted by the client.&lt;/p&gt;</comment>
                            <comment id="367952" author="flei" created="Fri, 31 Mar 2023 02:23:06 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/secure/ViewProfile.jspa?name=adilger&quot; class=&quot;user-hover&quot; rel=&quot;adilger&quot;&gt;adilger&lt;/a&gt; do you mean the var &lt;tt&gt;obd_timeout&lt;/tt&gt; in &lt;tt&gt;class_obd.c&lt;/tt&gt;?&lt;/p&gt;</comment>
                            <comment id="368065" author="adilger" created="Fri, 31 Mar 2023 20:42:22 +0000"  >&lt;p&gt;Yes, this is the global &quot;&lt;tt&gt;timeout&lt;/tt&gt;&quot; parameter set for the node.  That is actually more problematic than &lt;tt&gt;at_min&lt;/tt&gt;, etc. because &lt;tt&gt;obd_timeout&lt;/tt&gt; controls the client&apos;s &lt;tt&gt;OBD_PING&lt;/tt&gt; interval when it is idle.  If client has smaller &lt;tt&gt;obd_timeout&lt;/tt&gt; than server, no significant harm is done and client is more noisy than needed.  If client has much larger &lt;tt&gt;obd_timeout&lt;/tt&gt; than server then it will repeatedly be evicted by the servers, because they think it is dead (no contact for minutes).&lt;/p&gt;

&lt;p&gt;Implementation should be the same as previous patch - add a wrapper for to access &lt;tt&gt;obd_timeout&lt;/tt&gt; from the device if set, otherwise (by default for now) use the global &lt;tt&gt;obd_timeout&lt;/tt&gt; value.&lt;/p&gt;</comment>
                            <comment id="368325" author="gerrit" created="Tue, 4 Apr 2023 07:20:59 +0000"  >&lt;p&gt;&quot;Feng Lei &amp;lt;flei@whamcloud.com&amp;gt;&quot; uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/50519&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/50519&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9912&quot; title=&quot;fix multiple client mounts with different server timeouts&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9912&quot;&gt;LU-9912&lt;/a&gt; ptlrpc: add per-device timeout param&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: f29a032a06507b980281d9921413800fdf7d3846&lt;/p&gt;</comment>
                            <comment id="385596" author="aboyko" created="Tue, 12 Sep 2023 12:06:47 +0000"  >&lt;p&gt;Lustre uses obd_timeout mostly for&lt;/p&gt;

&lt;p&gt;1) recovery case soft timeout, hard timeout, stale client waiting etc.&lt;/p&gt;

&lt;p&gt;2) ping interval and pinger eviction timeout. With &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-16002&quot; title=&quot;Ping evictor delayed client eviction for 3 ping interval more than defined&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-16002&quot;&gt;LU-16002&lt;/a&gt; ping interval and eviction multiplier were separated from obd_timeout. I don&apos;t see a strong case to have dependency between ping and recovery. Also I think that pinger timeout eviction could be based on AT and not obd_timeout. And network latency and busy ptlrpc could be addressed by pinger evictor.&lt;/p&gt;

&lt;p&gt;3) obd_timeout should cover network timeout layers. Something like different network configuration with/without routers, link changing, network reconfiguration etc.&#160;&#160;&lt;/p&gt;

&lt;p&gt;Other parts - request timeout, ldlm timeouts are using Adaptive Timeouts mostly.&lt;/p&gt;

&lt;p&gt;I see the idea of having different ping interval for different FS. But I think that adding obd_timeout to every device is not good for original idea. It is better to have something like per-mount/per-FS variables.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="385730" author="adilger" created="Wed, 13 Sep 2023 06:42:16 +0000"  >&lt;p&gt;I also thought about per-mount/per-filesystem timeouts, but this is also complex because the pinging is actually done for each OBD device import basis, so having the timeout be on the OBD device makes sense.  When this parameter is documented, the parameter will be described as &quot;&lt;tt&gt;&amp;#42;.&lt;em&gt;FSNAME&lt;/em&gt;-&amp;#42;.timeout=TIMEOUT&lt;/tt&gt;&quot;, so that it applies to all OBD devices of that filesystem uniformly.&lt;/p&gt;</comment>
                            <comment id="398900" author="adilger" created="Mon, 8 Jan 2024 23:34:27 +0000"  >&lt;p&gt;One final thing that needs to be done here to fix the problem of a client mounting two different filesystems is to filter the &quot;global&quot; tunable parameters (&lt;tt&gt;timeout&lt;/tt&gt;, &lt;tt&gt;ldlm_timeout&lt;/tt&gt;, &lt;tt&gt;at_min&lt;/tt&gt;, &lt;tt&gt;at_max&lt;/tt&gt;, etc.) to only apply to OBD devices for that mountpoint.  For example, if a client is mounting &lt;tt&gt;testfs1&lt;/tt&gt;, then it should internally map &lt;tt&gt;timeout&lt;/tt&gt; and related parameters to &lt;tt&gt;&amp;#42;.testfs1&amp;#45;&amp;#42;.timeout&lt;/tt&gt;.  When mounting &lt;tt&gt;otherfs&lt;/tt&gt; from a different MGS it should map &lt;tt&gt;timeout&lt;/tt&gt; to &lt;tt&gt;&amp;#42;.otherfs&amp;#45;&amp;#42;.timeout&lt;/tt&gt;, etc. so that there is no confusion about global parameters affecting a different filesystem than intended.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="75623">LU-16749</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="71085">LU-16002</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="40977">LU-8750</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="67226">LU-15246</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <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|hzziyv:</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>