<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:22:10 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-8975] Batching time space for TBF scheduling</title>
                <link>https://jira.whamcloud.com/browse/LU-8975</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;In our actual TBF implementation, tokens in a bucket are updated according to the elapsed time and token rate when the class queue is actually able to dequeue an RPC request. Our&#160;TBF&#160;uses a global timer &#160;with expiration time&#160;always setting to the &#160;latest deadline of classes (bucket) and all classes are sorted according to their deadlines. When the timer expired, the class with smallest deadline will be selected. Then the first RPC request in this class queue will be dequeued and handled by an idle service thread.&lt;/p&gt;

&lt;p&gt;Current TBF assigns class deadline spaced by increments of &lt;em&gt;1/r&lt;/em&gt; to successive requests in the class queue(where &lt;em&gt;r&lt;/em&gt; is RPC rate of the class), If all requests are scheduled in order of their deadline values, the class (application) will receive service in proportion to&#160;&lt;em&gt;r&lt;/em&gt;.&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;&lt;span class=&quot;code-keyword&quot;&gt;class.&lt;/span&gt;deadline = &lt;span class=&quot;code-keyword&quot;&gt;class.&lt;/span&gt;last_check_time + 1/r;


&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Since each time the timer expired, it usually only generates one token and serves one request for the selected class with smallest deadline, this&#160;may destroy the sequentiality and locality of I/O requests in the class queue, resulting performance regression. i.e. two&#160;classes (jobs)&#160;may submit IO reuqests to the underlying disk system interleavely by using TBF, it is not conductive to the disk scheduler to optimize.&lt;/p&gt;

&lt;p&gt;A batching&#160;the time space strategy is proposed. Under this strategy,&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;&lt;span class=&quot;code-keyword&quot;&gt;class.&lt;/span&gt;deadline = &lt;span class=&quot;code-keyword&quot;&gt;class.&lt;/span&gt;last_check_time + batch_num * 1/r;


&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;By this way, when the global timer expired, the selected class will accumulate at less &lt;em&gt;batch_num&lt;/em&gt; tokens. Thus &lt;em&gt;batch_num _requests in the class queue can be handled batchly until exhaused&#160;_batch_num&lt;/em&gt; tokens.&lt;/p&gt;

&lt;p&gt;This stragegy not only considers the sequentiality and locality of requests, but also guarantee the rate limit.&lt;/p&gt;

&lt;p&gt;The format of command to configure the &lt;em&gt;batch_num&lt;/em&gt; for a rule is shown as follow:&#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;start RuleName jobid={dd.0} batch_num=32 rate=320


&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="42657">LU-8975</key>
            <summary>Batching time space for TBF scheduling</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="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="qian_wc">Qian Yingjin</assignee>
                                    <reporter username="qian">Qian Yingjin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 26 Dec 2016 10:03:21 +0000</created>
                <updated>Thu, 16 Aug 2018 21:16:13 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                    <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|hzyzan:</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>