<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:10:18 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-14501] NRS TBF UID: limit per &quot;any&quot; user?</title>
                <link>https://jira.whamcloud.com/browse/LU-14501</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;In my understanding of the TBF UID rules, it is not possible to set a limit per &quot;any UID&quot;. In our testing, the default rule ( &lt;tt&gt;default {*} 10000&lt;/tt&gt;&#160;) seems to include ALL UIDs, that is, 10,000 requests for all users. Please correct me if I&apos;m wrong.&lt;/p&gt;

&lt;p&gt;Say, we want to limit ost.OSS.ost_io.nrs_tbf_rule to 100 reqs/user. Do we have to add a rule for each UID? In our case, we have ~5,400 users.&lt;/p&gt;</description>
                <environment>CentOS 7</environment>
        <key id="63243">LU-14501</key>
            <summary>NRS TBF UID: limit per &quot;any&quot; user?</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="lixi_wc">Li Xi</assignee>
                                    <reporter username="sthiell">Stephane Thiell</reporter>
                        <labels>
                    </labels>
                <created>Mon, 8 Mar 2021 21:41:36 +0000</created>
                <updated>Tue, 11 May 2021 05:57:53 +0000</updated>
                                            <version>Lustre 2.12.6</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                            <comments>
                            <comment id="294373" author="lixi_wc" created="Tue, 9 Mar 2021 14:45:02 +0000"  >&lt;blockquote&gt;&lt;p&gt;the default rule ( default {*} 10000 ) seems to include ALL UIDs, that is, 10,000 requests for all users.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;For the TBF with UID type, I don&apos;t think this is correct. Each user with unique UID will have an dedicated different bucket for TBF UID, thus the rate limitation is for each user. If we want to make sure each user is only able to get rate of &amp;lt;= 100 request/sec from each NRS svcpt, setting the rate of the default rule to 100 would be enough. (please note there might be several svcpt on a server, meaning the actually limitation will be 100 * svcpt). I don&apos;t think 5400 rules is needed for this use case &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;.&lt;/p&gt;</comment>
                            <comment id="296683" author="sthiell" created="Thu, 25 Mar 2021 06:32:54 +0000"  >&lt;p&gt;Hi Li,&lt;/p&gt;

&lt;p&gt;Thanks for your response and clarification. After further testing, it seems to work as you describe. Reducing default {*} does indeed reduce the rate per UID and not globally. Then adding other per-uid rules does properly override the default (eg. I added a rule to exempt UID 0 and it&apos;s working).&lt;/p&gt;

&lt;p&gt;One thing I was wondering: is there a way to see which UID(s) have reached the rate limit?&#160; I don&apos;t think there is any stats about that in /sys, but perhaps with a special lustre logging debug mask? That would help adapting our rates.&lt;/p&gt;</comment>
                            <comment id="297349" author="lixi_wc" created="Wed, 31 Mar 2021 01:47:01 +0000"  >&lt;blockquote&gt;&lt;p&gt;is there a way to see which UID(s) have reached the rate limit?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I don&apos;t think there is any existing way. And I doubt there is any way to implement that efficiently. The status of the TBF are changing all the time. The rate limitation could be 1000 RPC/s or so. That means, a UID could be limited by TBF now, and after 1ms, the limitation might be gone. Under such quick change, there seems no efficient way to dump the real-time status.&lt;/p&gt;

&lt;p&gt;But it doesn&apos;t mean we are not able to collect some statistics or summaries. For example, I think we could implement a mechanism to record the UIDs reached the limitation in the past period (e.g. an hour?). It will take a significant effort to implemnt though. And before that, need to analyze whether that is useful for your use cases, and whether that is useful for a broader use cases.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="63551">LU-14567</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|i01ouv:</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>