<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:29:41 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-16749] apply a filter to the configuration log.</title>
                <link>https://jira.whamcloud.com/browse/LU-16749</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;We discovered that a lustre server can have entries in its configuration log which can effect other filesystems. eg&lt;/p&gt;

&lt;p&gt;lctl set_param -P llite.*.max_cached_mb=2048&lt;/p&gt;

&lt;p&gt;When a filesystem is mounted which has this in the filesystems configuration log, the client will apply the option to all mounted filesystems.&lt;/p&gt;

&lt;p&gt;I believe that the client should only apply a configuration option from the log to elements of that filesystem&lt;/p&gt;

&lt;p&gt;I can imagine a site which has multiple vendors and for example a vendor putting options in that casued issues for their competitor.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="75623">LU-16749</key>
            <summary>apply a filter to the configuration log.</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="wc-triage">WC Triage</assignee>
                                    <reporter username="james beal">James Beal</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Apr 2023 13:57:34 +0000</created>
                <updated>Thu, 2 Nov 2023 00:48:18 +0000</updated>
                                            <version>Lustre 2.12.9</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="369783" author="simmonsja" created="Tue, 18 Apr 2023 15:22:21 +0000"  >&lt;p&gt;A filter exist already. The correct command to use is &quot;&lt;tt&gt;lctl set_param lllite.my_filesystem-&amp;#42;.max_cached_mb=2048&lt;/tt&gt;&quot;. Just using &apos;&lt;tt&gt;&amp;#42;&lt;/tt&gt;&apos; means apply to everything.&lt;/p&gt;</comment>
                            <comment id="369812" author="adilger" created="Tue, 18 Apr 2023 17:24:35 +0000"  >&lt;p&gt;This has definitely been a problem in the past, especially if mounting two filesystems with different timeouts, since there &lt;b&gt;is&lt;/b&gt; only a single global value for the timeout on a client node. &lt;/p&gt;

&lt;p&gt;Patches in &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; and &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; are fixing the issue of having only a single global timeout, at_min, etc. tunable per client, by adding per-OBD timeout values. Review and testing of those patches would be helpful. I&apos;ve definitely thought about how &lt;tt&gt;lctl&lt;/tt&gt; or the kernel could map &quot;{{timeout}&quot; to the per-device parameter automatically, but I haven&apos;t come up with a good solution yet. &lt;/p&gt;

&lt;p&gt;Since &apos;&lt;tt&gt;&amp;#42;&lt;/tt&gt;&apos; is affecting all filesystems, this is a bit tricky to fix, because a single MGS may be serving multiple local filesystems, so it isn&apos;t possible to automatically map &apos;&lt;tt&gt;&amp;#42;&lt;/tt&gt;&apos; in &lt;tt&gt;lctl&lt;/tt&gt; to contain an fsname in the MGS config. It might be possible to constrain this to a specific filesystem during mount, since the other filesystem is also going to re-apply the settings when it mounts. However, not all &apos;&lt;tt&gt;&amp;#42;&lt;/tt&gt;&apos; uses are for the device name (though usually that is true), so this may be more complicated than expected.&lt;/p&gt;

&lt;p&gt;James B., getting some specific details of which parameters you had problems with would help to  understand what needs to be fixed. As James S. wrote, it is already &lt;em&gt;possible&lt;/em&gt; to use &lt;tt&gt;fsname-&amp;#42;&lt;/tt&gt; instead of just &lt;tt&gt;&amp;#42;&lt;/tt&gt; for many cases, though this requires more familiarity with Lustre, and probably updates to the Lustre manual and man pages to emphasize the correct usage.&lt;/p&gt;</comment>
                            <comment id="369872" author="james beal" created="Wed, 19 Apr 2023 09:22:09 +0000"  >&lt;p&gt;James S, I understand that you can correctly set parameters, &quot;&lt;tt&gt;lctl set_param lllite.my_filesystem-*.max_cached_mb=2048&lt;/tt&gt;&quot; is what bit us in particular. It was set in error on a new filesystem during debuging another issue. When the filesystem was put in to production then performance on all filesystems plummetted in a hard to find way. What I am asking for is that a lustre client only applies settings fetched from a remote MGS to the filesystem that that client is mounting at that time.&lt;/p&gt;

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

&lt;p&gt;To put this in context, we put the new fileserver in to production on the 27th of Feburary. We then had serval weeks were we were getting tickets for bad performance and the filesystems were being hit harder than normal but when we looked at a filesystem we got good performance for the level of load that we could see on the filesystem. By the 6th of March I was convinced that this was a issue and started investigating. And we found the issue by the 10th, and by the 14th we had returned performance to acceptable levels.&lt;/p&gt;

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

&lt;p&gt;As an aside, and I suspect this is more a specific vendor comment rather than a whamcloud one: There seems to be a practice of setting configuration in the servers where the clients are in a better position to know the best values, eg a 2TB machine will have a different setting for &lt;tt&gt;max_cached_mb than a machine with 64GB..&lt;/tt&gt;&lt;/p&gt;

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

&lt;p&gt;I am also interested in why there is a &lt;tt&gt;max_cached_mb setting at all, why should there be a limit to the amount of ram used by the cache ( But I feel that would be a new ticket, if warrents discussion ).&lt;/tt&gt;&lt;/p&gt;

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

&lt;p&gt;In particular I can imagine a black hat fs that has a config for a competitors system reducing their performance however I suspect human error as we saw is much more likely.&lt;/p&gt;</comment>
                            <comment id="370013" author="adilger" created="Thu, 20 Apr 2023 07:28:22 +0000"  >&lt;p&gt;Definitely the &lt;tt&gt;max_cached_mb&lt;/tt&gt; parameter is a client setting. The fact that it is set on the server is purely for convenience so that every client mounting the filesystem does not have to update the configuration. &lt;/p&gt;

&lt;p&gt;As for why this parameter exists, it is to allow admins to limit the amount of RAM used by the filesystem to avoid impacting application memory. Some apps ate tuned for a specific amount of RAM, and the admins/users don&apos;t want Lustre to interfere with that.&lt;/p&gt;

&lt;p&gt;Allowing a value like &quot;20%&quot; or &quot;80%&quot; would allow this to be usable on heterogeneous clients and probably would not be hard to implement. It used to be that most nodes in a cluster were the same, and a few would get a client-side setting, but it makes sense to handle this more flexibly. &lt;/p&gt;

&lt;p&gt;As for limiting parameters to a single filesystem mount, that is definitely something that I&apos;m interested to have fixed, it just hasn&apos;t happened yet. &lt;/p&gt;</comment>
                            <comment id="370014" author="james beal" created="Thu, 20 Apr 2023 07:46:35 +0000"  >&lt;p&gt;Andreas. Can we use this issue for limiting parameters to a single filesystem mount.&lt;/p&gt;

&lt;p&gt;I would like to see the percentage accepted as a value for &lt;tt&gt;max_cached_mb&lt;/tt&gt; however I don&apos;t understand why the parameter needs to exist, the nearest equiverlent I know of for vfs cache is &lt;tt&gt;vfs_cache_pressure&lt;/tt&gt; It seems to me that the kernel should &quot;just&quot; evict pages if a user space program wants the pages ( In a tightly coupled mpi program I can see this could be an issue over multiple nodes, but the use case for genomics is a random soup of work loads all decoupled, so I feel that we should have the setting as something like 95% ). Shall I make a new issue for the percentage ?&lt;/p&gt;</comment>
                            <comment id="370049" author="adilger" created="Thu, 20 Apr 2023 16:18:13 +0000"  >&lt;p&gt;Yes, a separate issue for &lt;tt&gt;max_cached_mb=N%&lt;/tt&gt; would be good.&lt;/p&gt;

&lt;p&gt;I can assure you that this tunable to limit Lustre cache size is a feature that some sites want in HPC environments.  If the cache limit is high then page cache management defers to the VM under pressure, but otherwise it can be difficult for the VM to manage pages because it can take tens of seconds for dirty data to be written when the server is busy. &lt;/p&gt;</comment>
                            <comment id="391419" author="adilger" created="Thu, 2 Nov 2023 00:48:09 +0000"  >&lt;p&gt;The patch &lt;a href=&quot;https://review.whamcloud.com/51952&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/51952&lt;/a&gt; &quot;&lt;tt&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-17030&quot; title=&quot;allow setting max_cached_mb with %&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-17030&quot;&gt;&lt;del&gt;LU-17030&lt;/del&gt;&lt;/a&gt; llite: allow setting max_cached_mb to a %&lt;/tt&gt;&quot; was landed for 2.16.0 to fix one part of the issue discussed here.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="47950">LU-9912</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="40977">LU-8750</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="67226">LU-15246</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="77461">LU-17030</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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_10030" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Epic/Theme</customfieldname>
                        <customfieldvalues>
                                        <label>client</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i03j87:</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>