<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:52:43 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-5580] Switch between &apos;JOBID&apos; and &apos;NID&apos; directly in NRS TBF</title>
                <link>https://jira.whamcloud.com/browse/LU-5580</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;When we want to change TBF based on NID to TBF based on UID (or reversely), we have to change the policy to FIFO (or any other policy) and to TBF based on UID. That&apos;s not natural. And &apos;tbf nid&apos; directly won&apos;t give out any error message as if it succeeded. That&apos;s confusing. I will see whether it is possible to improve it.&lt;/p&gt;</description>
                <environment></environment>
        <key id="26300">LU-5580</key>
            <summary>Switch between &apos;JOBID&apos; and &apos;NID&apos; directly in NRS TBF</summary>
                <type id="2" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11311&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="niu">Niu Yawei</assignee>
                                    <reporter username="gnlwlb">wu libin</reporter>
                        <labels>
                            <label>patch</label>
                    </labels>
                <created>Thu, 4 Sep 2014 09:40:57 +0000</created>
                <updated>Mon, 25 Jul 2016 17:28:22 +0000</updated>
                            <resolved>Fri, 10 Jul 2015 12:08:02 +0000</resolved>
                                    <version>Lustre 2.6.0</version>
                                    <fixVersion>Lustre 2.8.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="93179" author="gnlwlb" created="Thu, 4 Sep 2014 09:43:19 +0000"  >&lt;p&gt;I add a patch for this problem:&lt;br/&gt;
&lt;a href=&quot;http://review.whamcloud.com/11749&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/11749&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="93297" author="pjones" created="Fri, 5 Sep 2014 04:57:17 +0000"  >&lt;p&gt;Niu&lt;/p&gt;

&lt;p&gt;Could you please review this patch?&lt;/p&gt;

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

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="117129" author="lixi" created="Tue, 2 Jun 2015 09:26:33 +0000"  >&lt;p&gt;I relealized this patch is still under review when adding regression tests for TBF. Can we accelerate the review process? Otherwise, users might get confused by &apos;weird&apos; behaviors of changing TBF policies.&lt;/p&gt;</comment>
                            <comment id="117135" author="pjones" created="Tue, 2 Jun 2015 11:55:05 +0000"  >&lt;p&gt;ok Li Xi. We can do that.&lt;/p&gt;</comment>
                            <comment id="117293" author="adilger" created="Wed, 3 Jun 2015 15:41:01 +0000"  >&lt;p&gt;While this patch is fixing a real problem and I think it should be landed, I think at the high level it is still going in the wrong direction. Only allowing the TBF policy on &lt;em&gt;either&lt;/em&gt; NID &lt;em&gt;or&lt;/em&gt; JobID or later on the opcode is very limiting to users. It should really be possible to have TBF policy rules on different types of identifiers at the same time so that the admin has the flexibility to set e.g. default rules on NIDs (login nodes vs. compute vs. HSM agents) but then override those rules for specific JobIDs or opcodes or users or other identifiers as they are added.&lt;/p&gt;

&lt;p&gt;There would need to be a mechanism for ordering rules instead of just the order in which they are specified, so that the order in which the rules are matched can be specified.&lt;/p&gt;

&lt;p&gt;Also, the other question I have is how RPCs within a bucket are currently ordered? Is there any sorting within the bucket (e.g. by FID) or is it FIFO? Having ORR sorting within the TBF buckets would help improve performance after the RPC priority had been determined, especially if there is a large bucket such as &quot;compute nodes&quot; that may have many thousands of RPCs in it at one time.  Not sure if it is currently possible to stack TBF on top of ORR, but that would be the logical choice to simplify implementation, but it may also be acceptable to make TBF a &quot;super policy&quot; that does everything instead of having separate policies. &lt;/p&gt;</comment>
                            <comment id="117308" author="lixi" created="Wed, 3 Jun 2015 17:15:07 +0000"  >&lt;blockquote&gt;
&lt;p&gt;There would need to be a mechanism for ordering rules instead of just the order in which they are specified, so that the order in which the rules are matched can be specified.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I think the a problem here is how to express complex yet extendable rules. RPCs need to be classified according to a logical expression to meet with different requirements. I happened to implemnt similar mechanism in another project. So I am thinking of defining rules which looks like:&lt;/p&gt;

&lt;p&gt;JOBID=&lt;/p&gt;
{dd.500}@NID={192.168.1.1@tcp},JOBID={dd.0}@NID={192.168.1.*@tcp} 10000&lt;br/&gt;
&lt;br/&gt;
The expression of the rule is conbined by two sub-expression, JOBID={dd.500}
&lt;p&gt;@NID=&lt;/p&gt;
{192.168.1.1@tcp} and JOBID={dd.0}@NID={192.168.1.*@tcp}. The expression&apos;s value is the disjunction of all the sub-expressions, which mean, the expression will be true if at least one of the sub-expressions is true.&lt;br/&gt;
&lt;br/&gt;
And sub-expression JOBID={dd.500}@NID={192.168.1.1@tcp}
&lt;p&gt; is combined by JOBID=&lt;/p&gt;
{dd.500} and NID={192.168.1.1@tcp}. The value of sub-expression is the conjunction of both minimum-expressions(i.e. JOBID={dd.500}
&lt;p&gt; and NID=&lt;/p&gt;
{192.168.1.1@tcp}
&lt;p&gt;), which means the sub-expression will be trun if both of the minimum-expressions are ture.&lt;/p&gt;

&lt;p&gt;By using this kind of expression, we can define as complex rules as we wish. And it is not necessary to change the order of matching the rules. The rules still have a decreasing priority in the list. And an coming RPC will follow the first matched rule in the list.&lt;/p&gt;

&lt;p&gt;Ofcourse, we simply the way of defining the rules, because expression can only be written in the format of (a&amp;amp;&amp;amp;b&amp;amp;&amp;amp;...)||(c&amp;amp;&amp;amp;d&amp;amp;&amp;amp;...)||(e&amp;amp;&amp;amp;f&amp;amp;&amp;amp;...)||... There is no obvious benefit to enable complex expression like ((a&amp;amp;&amp;amp;b)||c)&amp;amp;&amp;amp;d, since it can be expressed by  (a&amp;amp;&amp;amp;b&amp;amp;&amp;amp;d)||(c&amp;amp;&amp;amp;d). Otherwise, it would be too complex both for people to edit&amp;amp;read the rules and the computer to parse&amp;amp;match the rules. &lt;/p&gt;

&lt;p&gt;The time complexity of matching the rule is N, and N is the number of minimum-expressions in the rules. Hopefully, we don&apos;t define too many rules as well as too complex expressions, so the time cost should be negligible.&lt;/p&gt;

&lt;p&gt;Another problem is that, currently,  with TBF-jobid, one bucket is allocated for RPCs belong to the same JobID. And with TBF-NID, one bucket is allocated for RPCs from the same NID. In the future, we might need to allocate one bucket for each rule instance, because otherwise, there will be too many buckets if we allocate one bucket for each kind of RPCs with different JOBID, NID and OPCODE etc.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Also, the other question I have is how RPCs within a bucket are currently ordered? Is there any sorting within the bucket (e.g. by FID) or is it FIFO? &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Within a single bucket, the RPCs are queued in a FIFO way.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not sure if it is currently possible to stack TBF on top of ORR, but that would be the logical choice to simplify implementation, but it may also be acceptable to make TBF a &quot;super policy&quot; that does everything instead of having separate policies. &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;That is a good idea. I was thinking about layered policies which means a RPC can be sorted/throttled by mutiple policies. However, with above complex rule of TBF implemented, I think ORR (or other) policy inside TBF might be enough for most (if not all) use cases. I can&apos;t think of a use case that RPCs need to be sorted for more than once. It makes sense that RPCs are first throttled for QoS purposes, and then sorted for performance improvement.&lt;/p&gt;</comment>
                            <comment id="117378" author="lixi" created="Thu, 4 Jun 2015 03:08:12 +0000"  >&lt;p&gt;Also, I realized that the TBF policy is not only throttling RPC rate but also schedule RPCs between buckets. And if we use FID or OST index as the bucket key and then sort RPC inside the bucket, we can get a policy which looks like a combination of ORR/TRR and TBF. However, inside TBF, it is not exactly round robin scheduler, it is a deadline-base scheduler. The scheduler will choose the bucket which contains the RPC that has the earlest deadline time. I needs more time to analyse whether this scheduler is better than round robin in most cases. But it doesn&apos;t look obviousely worse than roun robin scheduler.&lt;/p&gt;</comment>
                            <comment id="120917" author="gerrit" created="Fri, 10 Jul 2015 03:03:28 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/11749/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/11749/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5580&quot; title=&quot;Switch between &amp;#39;JOBID&amp;#39; and &amp;#39;NID&amp;#39; directly in NRS TBF&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5580&quot;&gt;&lt;del&gt;LU-5580&lt;/del&gt;&lt;/a&gt; ptlrpc: policy switch directly in tbf&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: e7ab554c1ca887e1a3fa9da5250b2debb4eee2d6&lt;/p&gt;</comment>
                            <comment id="120949" author="pjones" created="Fri, 10 Jul 2015 12:08:02 +0000"  >&lt;p&gt;Landed for 2.8&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="19694">LU-3558</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="34888">LUDOC-328</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|hzwvaf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>15570</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>