<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:13:57 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-1147] Reduce CPU overhead and performance degradation with larger striped files while reading uncached data in 1.8</title>
                <link>https://jira.whamcloud.com/browse/LU-1147</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Wile looking at functions with high CPU utilization for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-1056&quot; title=&quot;Single-client, single-thread and single-file is limited at 1.5GB/s&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-1056&quot;&gt;&lt;del&gt;LU-1056&lt;/del&gt;&lt;/a&gt; we came across lov_stripe_size as one of the top functions for files with larger striping.  After looking into this it appears the reason can be summarized as:&lt;/p&gt;

&lt;p&gt;With the current read implementation in Lustre 1.8 ll_readpage-&amp;gt;ll_readahead-&amp;gt;odd_merge_lvb is called for every page of a file at least once.  Even if the read ahead pre-fetched the data into cache it still requires a subsequent call to ll_readpage to set the page flags to uptodate.  obd_merge_lvb is used to calculate the kms for an inode and calls lov_stripe_size for every stripe in a file.  So the larger the striping of a file the larger the overhead in this calculation.  To reduce the overhead on calculating the kms i_size_read() could be used for the inode instead of locking the stripe and calling obd_merge_lvb.  The inode size should be updated by ll_extent_lock which is called by ll_file_aio_read.&lt;/p&gt;</description>
                <environment>Tested on RHEL 5.6, OFED 1.5.3.1, and Lustre 1.8.6</environment>
        <key id="13356">LU-1147</key>
            <summary>Reduce CPU overhead and performance degradation with larger striped files while reading uncached data in 1.8</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="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="2">Won&apos;t Fix</resolution>
                                        <assignee username="adilger">Andreas Dilger</assignee>
                                    <reporter username="jfilizetti">Jeremy Filizetti</reporter>
                        <labels>
                            <label>llite</label>
                            <label>performance</label>
                    </labels>
                <created>Tue, 28 Feb 2012 08:58:51 +0000</created>
                <updated>Wed, 5 Mar 2014 22:40:57 +0000</updated>
                            <resolved>Wed, 5 Mar 2014 22:40:56 +0000</resolved>
                                    <version>Lustre 1.8.7</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="29920" author="jfilizetti" created="Tue, 28 Feb 2012 09:02:26 +0000"  >&lt;p&gt;Performance before and after patch reading uncached files from a client.  While there is still a lot of fluctuations with the patch I was able to to obtain almost the same performance with 118 stripes as single striped file.&lt;/p&gt;</comment>
                            <comment id="29922" author="jfilizetti" created="Tue, 28 Feb 2012 09:30:42 +0000"  >&lt;p&gt;Patch can be found at &lt;a href=&quot;http://review.whamcloud.com/#change,2221&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,2221&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="29978" author="pjones" created="Wed, 29 Feb 2012 14:06:10 +0000"  >&lt;p&gt;Jeremy&lt;/p&gt;

&lt;p&gt;Thanks for the patch. I know that Andreas has provided some comments on the patch in gerrit. My additional comment is that this work would be far likelier to land if it was targeted on master as that is the codeline under active development atm.&lt;/p&gt;

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="30089" author="jfilizetti" created="Thu, 1 Mar 2012 07:48:13 +0000"  >&lt;p&gt;Thanks for the input Peter, I replied to Andreas&apos;s comments.  I don&apos;t know if the same issue exists in master but we are still probably at least a year away from moving to Lustre 2+.  Until then I still need to keep focusing on 1.8.&lt;/p&gt;</comment>
                            <comment id="33353" author="pjones" created="Tue, 3 Apr 2012 10:13:37 +0000"  >&lt;p&gt;Andreas&lt;/p&gt;

&lt;p&gt;Could you please answer Jeremy&apos;s follow-on question about this patch.&lt;/p&gt;

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

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="33361" author="adilger" created="Tue, 3 Apr 2012 12:17:40 +0000"  >&lt;p&gt;Oleg, you reworked a lot of the 1.8 page handling code to reduce the DLM overhead.  Can you please comment on whether Jeremy&apos;s patch in &lt;a href=&quot;http://review.whamcloud.com/2221&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/2221&lt;/a&gt; would work correctly?&lt;/p&gt;

&lt;p&gt;Jeremy, is the performance in the attached graph with or without data checksums enabled?  In 2.2 clients the checksums are calculated on multiple cores (even for a single-threaded read/write) and this has shown to improve single-client performance significantly.&lt;/p&gt;</comment>
                            <comment id="78422" author="jfc" created="Wed, 5 Mar 2014 01:03:47 +0000"  >&lt;p&gt;Jeremy &amp;#8211; is this still an issue you are interested in?&lt;br/&gt;
If you have moved on and we don&apos;t need to keep tracking this, I&apos;d like to mark it as resolved.&lt;br/&gt;
Please let me know what you would prefer?&lt;br/&gt;
Thanks,&lt;br/&gt;
~ jfc.&lt;/p&gt;</comment>
                            <comment id="78540" author="jfilizetti" created="Wed, 5 Mar 2014 22:21:21 +0000"  >&lt;p&gt;Go ahead and close the issue, I&apos;ll open a new ticket for Lustre 2.x when we get to that point.&lt;/p&gt;</comment>
                            <comment id="78543" author="jfc" created="Wed, 5 Mar 2014 22:40:10 +0000"  >&lt;p&gt;Thank you Jeremy.&lt;br/&gt;
~ jfc.&lt;/p&gt;</comment>
                            <comment id="78544" author="jfc" created="Wed, 5 Mar 2014 22:40:57 +0000"  >&lt;p&gt;Issue may be raised again for 2.x at a future time.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="10902" name="stripe_perf.png" size="3059073" author="jfilizetti" created="Tue, 28 Feb 2012 09:02:26 +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|hzvya7:</customfieldvalue>

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