<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:00:24 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-13336] Opendir with read intent</title>
                <link>https://jira.whamcloud.com/browse/LU-13336</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Lustre tree walking performance is fairly poor (~30K files/s) while stat() performance is decent (~200K files/s). The culprit seems to be readdir, which is a series of small file reads from the MDS. (Note readdir isn&apos;t tested by mdtest.)&lt;/p&gt;

&lt;p&gt;While there are a number of ideas to improve tree walking performance, we think the best potential is to implement opendir with read intent. Opendir should read and return the first page of the directory along with the directory read lock. This can avoid a bunch of RPCs: open, read req, read RDMA. &lt;/p&gt;

&lt;p&gt;For small directories (the majority), a single page may well be sufficient to include all dirents, meaning no more RPCs necessary. For larger dirs, the client can begin processing the first page while other pages are delivered from the MDS.&lt;/p&gt;

&lt;p&gt;Ref: Cray LUS-7695&lt;/p&gt;</description>
                <environment></environment>
        <key id="58289">LU-13336</key>
            <summary>Opendir with read intent</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="wc-triage">WC Triage</assignee>
                                    <reporter username="nrutman">Nathan Rutman</reporter>
                        <labels>
                    </labels>
                <created>Thu, 5 Mar 2020 19:54:49 +0000</created>
                <updated>Sat, 7 Mar 2020 23:02:49 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="264852" author="adilger" created="Sat, 7 Mar 2020 23:02:49 +0000"  >&lt;p&gt;I wouldn&apos;t be against reading more than a single page. We already have &quot;max_readahead_whole_mb&quot; for files, typically 2MB, so that the whole file is read into client cache on first access. Since network latency is half of the battle, it likely wouldn&apos;t be bad to read a whole RPC&apos;s worth of pages into the client cache on open. &lt;/p&gt;

&lt;p&gt;That said - one case that needs to be determined is whether the read is for readdir(), or whether it is for ioctl().  While I suspect readdir() is overwhelmingly the majority, it would be good if we could distinguish them. In any case, having a tunable to benchmark this and change it in the future  is necessary. &lt;/p&gt;</comment>
                    </comments>
                    <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|i00uzb:</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>