<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:58:37 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-6254] Fix OFD/OSD prefetch for osd-ldiskfs and osd-zfs</title>
                <link>https://jira.whamcloud.com/browse/LU-6254</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;The ladvise code from &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-4931&quot; title=&quot;New feature of giving server/storage side advice of accessing file&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-4931&quot;&gt;&lt;del&gt;LU-4931&lt;/del&gt;&lt;/a&gt; (&lt;a href=&quot;http://review.whamcloud.com/12458&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/12458&lt;/a&gt;) and the recent ZFS performance improvements for read have highlighted that there are some inconsistencies in osd_read_prep() and osd_bufs_get_read() between osd-ldiskfs and osd-zfs.&lt;/p&gt;

&lt;p&gt;It would be best for ladvise on ZFS if it were possible to just call dmu_prefetch() on the specified range and not have to actually set up the pages and drop them again immediately. &lt;/p&gt;

&lt;p&gt;On ldiskfs, it appears that osd_read_prep() seems somewhat broken since it is &lt;em&gt;removing&lt;/em&gt; pages from cache just before they are read:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;        for (i = 0; i &amp;lt; npages; i++) {
                if (cache == 0)
                        generic_error_remove_page(inode-&amp;gt;i_mapping,
                                                  lnb[i].lnb_page);
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;which means that prefetching the page into OSS cache will be mostly useless, if it is discarded during the read phase immediately before reading it. I can understand dropping pages from cache for writes, but I&apos;d think for reads it makes sense to leave them in cache if they are about to be used, especially if they are being explicitly prefetched.&lt;/p&gt;
</description>
                <environment></environment>
        <key id="28723">LU-6254</key>
            <summary>Fix OFD/OSD prefetch for osd-ldiskfs and osd-zfs</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="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="bzzz">Alex Zhuravlev</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>patch</label>
                    </labels>
                <created>Tue, 17 Feb 2015 16:13:33 +0000</created>
                <updated>Sat, 29 Jan 2022 10:24:30 +0000</updated>
                                            <version>Lustre 2.8.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>10</watches>
                                                                            <comments>
                            <comment id="107126" author="bfaccini" created="Tue, 17 Feb 2015 17:23:14 +0000"  >&lt;p&gt;But concerning the pages unmap from cache in ldiskf:osd_read_prep(), I understand it will only occur if /proc/fs/lustre/osd-ldiskfs/&amp;lt;DEV&amp;gt;/read_cache_enable has been deliberately unset from its default value. Or did I miss something here?&lt;/p&gt;</comment>
                            <comment id="107197" author="adilger" created="Tue, 17 Feb 2015 23:45:31 +0000"  >&lt;p&gt;That is true, but I don&apos;t think it is the job of &quot;read prep&quot; to remove pages from cache if they are already IN cache. At most it should only remove pages from cache AFTER read. Otherwise, it isn&apos;t possible to prefetch pages into cache manually via ladvise(WILLNEED) when cache is disabled, nor is it possible to implement NOREUSE semantics. &lt;/p&gt;</comment>
                            <comment id="109056" author="gerrit" created="Fri, 6 Mar 2015 14:37:09 +0000"  >&lt;p&gt;Li Xi (lixi@ddn.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/13996&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/13996&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6254&quot; title=&quot;Fix OFD/OSD prefetch for osd-ldiskfs and osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6254&quot;&gt;LU-6254&lt;/a&gt; ldiskfs: only remove page from cache after I/O&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 6bec345c9517587ec1e9c6679fbdec2e47bb269c&lt;/p&gt;</comment>
                            <comment id="202870" author="lixi" created="Thu, 20 Jul 2017 08:32:20 +0000"  >&lt;p&gt;As far as we test, the patch improves performance:&lt;/p&gt;

&lt;p&gt;We see  15-20% improved for read performace and ~5% write performace dropped with OSS&lt;br/&gt;
READ/Write cache disabled after applying the patch, in generally, patch still makes sense for us.&lt;/p&gt;

&lt;p&gt;So, please reconsider the patch again.&lt;/p&gt;</comment>
                            <comment id="202871" author="lixi" created="Thu, 20 Jul 2017 08:33:21 +0000"  >&lt;p&gt;A cluster with 5000 clients were used to test this patch, and no problem was found.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="25389">LU-5278</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="24298">LU-4931</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="43452">LU-9069</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|hzx6fz:</customfieldvalue>

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