<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:13:05 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-1057] low performance maybe related to quota</title>
                <link>https://jira.whamcloud.com/browse/LU-1057</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;When running a performance test (sequential data IOs, 15 tasks writing in one file each) on a Lustre file-system, installed with Lustre 2.1 plus a few Bull patches, I observe very low throughput compared to what I usually measure on the same hardware. &lt;/p&gt;

&lt;p&gt;Write bandwidth is varying between 150MB/s and 500 MB/s running with a standard user. With the exact same parameters and configuration, but running under the root user, I get around 2000 MB/s write bandwidth. This second value is what I observe usually.&lt;br/&gt;
With the root user, I suppose the flag OBD_BRW_NOQUOTA is set (but I have not been able to confirm that from the source code), which makes the request processing skip the lquota_chkdq() quota check in osc_queue_async_io().&lt;/p&gt;

&lt;p&gt;The profiling of the Lustre client indicates more than 50% of time is spent in osc_quota_chkdq() routine. So this seems related to the quota subsystem and certainly explains why root user is not impacted by the problem. I will attach the profiling reports to this ticket.&lt;/p&gt;

&lt;p&gt;The Lustre client is a bullx S6010-4, which has 128 cores and a large NUMIOA factor. The same performance measure on a bullx S6010, which has only 32 cores and smaller NUMIOA factor, gives around 3000 MB/s write bandwidth, so it is not impacted by the performance issue.&lt;/p&gt;


&lt;p&gt;I have recompiled the lquota module after removing the cfs_spin_lock()/cfs_spin_unlock() calls on qinfo_list_lock in osc_quota_chkdq() routine and the performance is back to the expected level. Note that the qinfo_hash[] table in the Lustre client is empty since quota are disabled.&lt;/p&gt;

&lt;p&gt;How many asynchronous IO requests can be generated by only 15 writing tasks ? Is there so many requests in parallel that the qinfo_list_lock becomes a congestion point ?&lt;/p&gt;

&lt;p&gt;Is there more latency in the spin_lock()/spin_unlock() routines when the NUMIOA factor is high ?&lt;/p&gt;</description>
                <environment>Lustre 2.1 with Bull patches, bullxlinux6.1 x86_64 (based on Redhat 6.1), server bullx S6010-4</environment>
        <key id="13030">LU-1057</key>
            <summary>low performance maybe related to quota</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.whamcloud.com/images/icons/priorities/major.svg">Major</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="hongchao.zhang">Hongchao Zhang</assignee>
                                    <reporter username="pichong">Gregoire Pichon</reporter>
                        <labels>
                            <label>paj</label>
                    </labels>
                <created>Tue, 31 Jan 2012 04:59:30 +0000</created>
                <updated>Sat, 22 Dec 2012 10:24:29 +0000</updated>
                            <resolved>Thu, 27 Sep 2012 16:29:12 +0000</resolved>
                                                    <fixVersion>Lustre 2.3.0</fixVersion>
                    <fixVersion>Lustre 2.1.4</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>8</watches>
                                                                            <comments>
                            <comment id="27648" author="johann" created="Tue, 31 Jan 2012 07:27:46 +0000"  >&lt;p&gt;To speed up the case when quota isn&apos;t enforced (like in this case), we could just record the number of osc_quota_info entries we have for each cli and skip the hash lookup as well as the locking entirely.&lt;/p&gt;

&lt;p&gt;When quota is enforced, i think we should first have one hash per cli instead of a global hash and spinlock.&lt;br/&gt;
In fact, we might just want to use the generic cfs_hash_t to handle this (which uses rw spinlock already).&lt;/p&gt;</comment>
                            <comment id="27654" author="pichong" created="Tue, 31 Jan 2012 09:53:09 +0000"  >&lt;p&gt;Here are the oprofile reports for&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;a Lustre client machine S6010-4 (128 cores and large NUMIOA factor),&lt;/li&gt;
	&lt;li&gt;a Lustre client machine S6010-4 but using root user&lt;/li&gt;
	&lt;li&gt;a Lustre client machine S6010   (32 cores)&lt;br/&gt;
during the benchmark that performs sequential data IO writes with 15 tasks over 15 files (one for each task), each file is stripped on one of the 15 OSTs of the file-system.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="27655" author="pjones" created="Tue, 31 Jan 2012 10:23:06 +0000"  >&lt;p&gt;Niu&lt;/p&gt;

&lt;p&gt;Could you please look into this one?&lt;/p&gt;

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

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="27659" author="johann" created="Tue, 31 Jan 2012 11:12:39 +0000"  >&lt;p&gt;Actually, we might be able to just use a radix tree with RCU &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;br/&gt;
&lt;a href=&quot;http://lxr.linux.no/#linux+v3.2.2/include/linux/radix-tree.h#L88&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://lxr.linux.no/#linux+v3.2.2/include/linux/radix-tree.h#L88&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="27682" author="johann" created="Tue, 31 Jan 2012 19:04:39 +0000"  >&lt;p&gt;I have just pushed a - untested - patch using RCU &amp;amp; radix tree:&lt;br/&gt;
&lt;a href=&quot;http://review.whamcloud.com/2074&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/2074&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="27758" author="pichong" created="Thu, 2 Feb 2012 05:59:34 +0000"  >&lt;p&gt;Thank you Johann.&lt;/p&gt;

&lt;p&gt;I have tested your patch (set 2) and results are good. The performance is at the expected level and the profiling report does not show too much time spent in osc_quota_chkdq() routine (0.0170% of the profiling samples).&lt;/p&gt;

&lt;p&gt;Note that my configuration still has quota disabled and therefore there are no osc_quota_info entries.&lt;/p&gt;</comment>
                            <comment id="27760" author="johann" created="Thu, 2 Feb 2012 06:35:52 +0000"  >&lt;p&gt;Thanks for testing this patch Gr&#233;goire. I&apos;m now waiting for autotest results to check if the patch broke quota &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="27918" author="johann" created="Sat, 4 Feb 2012 15:12:54 +0000"  >&lt;p&gt;Please note that there was a bug in the patch:&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;rc = radix_tree_insert(&amp;amp;cli-&amp;gt;cl_quota_ids[type], qid[type], &amp;amp;oqi);
                                                            ^^^^ &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; should be oqi
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I have pushed the corrected version. That said, it only shows up when you start using quota.&lt;/p&gt;</comment>
                            <comment id="40972" author="pichong" created="Thu, 21 Jun 2012 03:35:28 +0000"  >&lt;p&gt;Hi Johann,&lt;/p&gt;

&lt;p&gt;What is the status of this ticket ? Do you plan to provide a new version of the patch with hash table implementation ?&lt;/p&gt;

&lt;p&gt;This issue is going to become critical as many of these Bullx S6010-4 machines (with large NUMA factor) are being installed in the june/july timeframe at TGCC customer site.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;</comment>
                            <comment id="41450" author="ian" created="Wed, 4 Jul 2012 03:13:08 +0000"  >&lt;p&gt;Support team can pick up and refresh Johann&apos;s last patch&lt;/p&gt;</comment>
                            <comment id="41455" author="pjones" created="Wed, 4 Jul 2012 05:29:45 +0000"  >&lt;p&gt;Yujian&lt;/p&gt;

&lt;p&gt;Could you please take care of this one?&lt;/p&gt;

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

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="41469" author="pjones" created="Thu, 5 Jul 2012 02:23:54 +0000"  >&lt;p&gt;Reassign to Hongchao&lt;/p&gt;</comment>
                            <comment id="41601" author="hongchao.zhang" created="Mon, 9 Jul 2012 06:31:37 +0000"  >&lt;p&gt;status update:&lt;/p&gt;

&lt;p&gt;the updated path using cfs_hash_t is under test.&lt;/p&gt;</comment>
                            <comment id="42711" author="hongchao.zhang" created="Sun, 5 Aug 2012 05:43:41 +0000"  >&lt;p&gt;the patch has been merged (1b044fecb42c1f72ca2d2bc2bf80a4345b9ccf11)&lt;/p&gt;</comment>
                            <comment id="45650" author="jlevi" created="Thu, 27 Sep 2012 16:29:12 +0000"  >&lt;p&gt;Please let me know if there is outstanding work on this ticket.&lt;/p&gt;</comment>
                            <comment id="45987" author="pichong" created="Thu, 4 Oct 2012 11:22:28 +0000"  >&lt;p&gt;I have backported the patch into b2_1: &lt;a href=&quot;http://review.whamcloud.com/#change,4184&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,4184&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The tests show the contention on quota (osc_quota_chkdq() routine) has been fixed.&lt;/p&gt;

&lt;p&gt;Could this patch been reviews ?&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="10793" name="oprofile.client.S6010-4.report.txt" size="248624" author="sebastien.buisson" created="Tue, 31 Jan 2012 10:00:17 +0000"/>
                            <attachment id="10794" name="oprofile.client.S6010-4.root.report.txt" size="246655" author="sebastien.buisson" created="Tue, 31 Jan 2012 10:00:17 +0000"/>
                            <attachment id="10795" name="oprofile.client.S6010.report.txt" size="273215" author="sebastien.buisson" created="Tue, 31 Jan 2012 10:00:17 +0000"/>
                    </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|hzv61j:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4513</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>