<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:40:44 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-11077] Client-specific tunable parameter configuration</title>
                <link>https://jira.whamcloud.com/browse/LU-11077</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;With nodemaps, the MGS should be able to configure individual nodemaps to have different parameters, like &lt;tt&gt;JOBID_VAR&lt;/tt&gt; if one cluster is scheduled by SLURM and one is scheduled by lfs.&lt;/p&gt;

&lt;p&gt;Adding a &quot;&lt;tt&gt;-N NODEMAP&lt;/tt&gt;&quot; argument to the &quot;&lt;tt&gt;lctl set_param&lt;/tt&gt;&quot; command line would be a good interface, and store the parameters into an &lt;tt&gt;FSNAME-client:NODEMAP&lt;/tt&gt; file on the MGS that is sent to clients that are part of the nodemap.&lt;/p&gt;</description>
                <environment></environment>
        <key id="52532">LU-11077</key>
            <summary>Client-specific tunable parameter configuration</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</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="bevans">Ben Evans</reporter>
                        <labels>
                    </labels>
                <created>Fri, 8 Jun 2018 20:58:30 +0000</created>
                <updated>Thu, 25 Jan 2024 07:10:45 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="229372" author="adilger" created="Sat, 9 Jun 2018 01:12:52 +0000"  >&lt;p&gt;Yes, it would make sense to store nodemap-specific tunables in &lt;tt&gt;&amp;lt;fsname&amp;gt;-client:&amp;lt;nodemap&amp;gt;&lt;/tt&gt; or &lt;tt&gt;params:&amp;lt;nodemap&amp;gt;&lt;/tt&gt; on the MGS config log for those clients. This would be sent from the MGS to clients connecting as part of &lt;tt&gt;&amp;lt;nodemap&amp;gt;&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;However, we&apos;d need to decide whether the clients would first process all of the &lt;tt&gt;&amp;lt;fsname&amp;gt;-client&lt;/tt&gt; config log first and &lt;tt&gt;params:&amp;lt;nodemap&amp;gt;&lt;/tt&gt; afterward, or only &lt;tt&gt;&amp;lt;fsname&amp;gt;-client:&amp;lt;nodemap&amp;gt;&lt;/tt&gt;, or if all of the &lt;tt&gt;&amp;lt;nodemap&amp;gt;&lt;/tt&gt; records would go into the global log and be passed or filtered based on whether the client is part of &lt;tt&gt;&amp;lt;nodemap&amp;gt;&lt;/tt&gt; or not?&lt;/p&gt;</comment>
                            <comment id="229406" author="bevans" created="Mon, 11 Jun 2018 14:29:00 +0000"  >&lt;p&gt;With most configurations, you move from the most general to the most specific.&#160; So apply the settings for everyone, like OST pools, and each nodemap would get informaition specific to them (like jobID format and network tokens).&#160; So more targetted settings override more global ones.&lt;/p&gt;</comment>
                            <comment id="268820" author="adilger" created="Tue, 28 Apr 2020 23:50:09 +0000"  >&lt;p&gt;I&apos;m also wondering whether it makes sense to have a purely client-side configuration file like &quot;&lt;tt&gt;/etc/lustre/client.params&lt;/tt&gt;&quot;, suitable for use on unique clients where the configuration needs to be dramatically different (e.g. remote clients, large shared-memory machines, service nodes, etc), that contains lines in a form suitable for passing to &quot;&lt;tt&gt;lctl set_param -F&lt;/tt&gt;&quot; (which uses YAML &quot;&lt;tt&gt;param: value&lt;/tt&gt;&quot; format):&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;osc.*.max_pages_per_rpc: 16M
llite.testfs-*.max_cached_mb: 64G
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and/or directly usable as input to &quot;&lt;tt&gt;lctl set_param&lt;/tt&gt;&quot; (which uses &quot;&lt;tt&gt;param=value&lt;/tt&gt;&quot; format) like:&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;osc.*.max_pages_per_rpc=16M
llite.testfs-*.max_cached_mb=64G
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This configuration file would be processed by &lt;tt&gt;/sbin/mount.lustre&lt;/tt&gt; after the client filesystem is mounted.  This is preferable to trying to automatically run a script like &quot;&lt;tt&gt;/etc/rc.d/rc.local&lt;/tt&gt;&quot; at a specific point in the boot sequence, but would be ineffective if the client is (re-)mounted after boot.&lt;/p&gt;

&lt;p&gt;It isn&apos;t clear to me whether we would need to have &quot;&lt;tt&gt;/etc/lustre/$fsname-client.params&lt;/tt&gt;&quot; or not, since &quot;$&lt;tt&gt;fsname&lt;/tt&gt;&quot; could already be specified as part of the parameters if needed (e.g. &quot;&lt;tt&gt;osc.$fsname-*.max_rpcs_in_flight=64&lt;/tt&gt;&quot; or similar).&lt;/p&gt;</comment>
                            <comment id="268821" author="adilger" created="Wed, 29 Apr 2020 00:02:18 +0000"  >&lt;p&gt;We may want to handle the nodemap-side configuration change as part of a larger config file makeover together with &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10360&quot; title=&quot;use Imperative Recovery logs for client-&amp;gt;MDT/OST connections&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10360&quot;&gt;LU-10360&lt;/a&gt;, since that will essentially eliminate the need for the &quot;&lt;tt&gt;&amp;lt;fsname&amp;gt;-client&lt;/tt&gt;&quot; config file describing all of the MDT/MDC and OST/OSC devices.&lt;/p&gt;</comment>
                            <comment id="268862" author="simmonsja" created="Wed, 29 Apr 2020 12:28:37 +0000"  >&lt;p&gt;You can do this with the udev hwdb in theory since all of lustre&apos;s tunables that are sysfs files are udev aware.&#160;&lt;a href=&quot;https://www.freedesktop.org/software/systemd/man/hwdb.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.freedesktop.org/software/systemd/man/hwdb.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="269344" author="adilger" created="Tue, 5 May 2020 23:30:44 +0000"  >&lt;p&gt;James, I don&apos;t think hwdb looks like a good fit for this, since that appears to be mostly desktop-focussed, and frankly I&apos;m not a big fan of systemd.  It also has the issue that it doesn&apos;t appear that it would work for parameters in debugfs or procfs.  &lt;/p&gt;</comment>
                            <comment id="269404" author="simmonsja" created="Wed, 6 May 2020 11:27:15 +0000"  >&lt;p&gt;Our admins were not excited by the idea of hwdb since it meant to them managing another file with puppet. Admins, at least at ORNL, don&apos;t like configuration type files. They want things that are scriptable. For example the LUTF work is being looked to for this reason. Our admins will be able to manage and monitor LNet with python.&lt;/p&gt;</comment>
                            <comment id="269431" author="adilger" created="Wed, 6 May 2020 15:33:44 +0000"  >&lt;p&gt;There is nothing to prevent running &quot;&lt;tt&gt;lctl set_param&lt;/tt&gt;&quot; from a script to set client-specific parameters today. &lt;/p&gt;</comment>
                            <comment id="299623" author="adilger" created="Fri, 23 Apr 2021 21:14:58 +0000"  >&lt;p&gt;One potential issue with having a separate &lt;tt&gt;params:&amp;lt;nodemap&amp;gt;&lt;/tt&gt; file is that the client would have to explicitly request this configuration file from the MGS at mount time, but the client itself does not even know it is part of &lt;tt&gt;&amp;lt;nodemap&amp;gt;&lt;/tt&gt;.  It seems impractical to &quot;append&quot; the &lt;tt&gt;params:&amp;lt;nodemap&amp;gt;&lt;/tt&gt; records to the end of &lt;tt&gt;params&lt;/tt&gt;, since this would mess up config llog processing on the client if some other parameter was added to &lt;tt&gt;params&lt;/tt&gt; at runtime, since llog files are sequential and the client tracks its last-processed record index locally so that it will process only new records on each update.&lt;/p&gt;

&lt;p&gt;It seems reasonable for clients to request some &quot;extra&quot; config file like &lt;tt&gt;params:nodemap&lt;/tt&gt; (i.e. literally &quot;&lt;tt&gt;nodemap&lt;/tt&gt;&quot;) or similar, and it is up to the MGS to do the mapping.  For many clients, that would be &lt;tt&gt;nodemap=default&lt;/tt&gt;, so possibly &lt;tt&gt;params:default&lt;/tt&gt; if it exists (or maybe that is just the regular &lt;tt&gt;params&lt;/tt&gt; file and is ignored), and for clients in &lt;tt&gt;nodemap=XXX&lt;/tt&gt; they would get &lt;tt&gt;params:XXX&lt;/tt&gt; if it exists.  &lt;/p&gt;

&lt;p&gt;For compatibility, it might also make sense that the nodemap-specific &lt;tt&gt;params:XXX&lt;/tt&gt; file is supplied to the client &lt;b&gt;instead&lt;/b&gt; of &lt;tt&gt;params&lt;/tt&gt; if it exists, and this &lt;em&gt;replaces&lt;/em&gt; the regular &lt;tt&gt;params&lt;/tt&gt; file.  That might make a bit more work for the admin since parameters would need to be copied over to each of the &lt;tt&gt;params:XXX&lt;/tt&gt; files, but it would allow for disjoint parameters settings (i.e. not everything in &lt;tt&gt;params&lt;/tt&gt; is inherited by clients into &lt;tt&gt;params:XXX&lt;/tt&gt;).&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="49665">LU-10360</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="67226">LU-15246</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="63925">LU-14639</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="76767">LU-16931</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|hzzy73:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>