<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:50:20 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-12179] allocate continuous pages when disabled page caches</title>
                <link>https://jira.whamcloud.com/browse/LU-12179</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11347&quot; title=&quot;Do not use pagecache for SSD I/O when read/write cache are disabled&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11347&quot;&gt;&lt;del&gt;LU-11347&lt;/del&gt;&lt;/a&gt;: Do not use pagecache for SSD I/O when read/write cache are disabled,&#160;&lt;/p&gt;

&lt;p&gt;this feature allocates the physical pages per OSS I/O thread in need at the runtime, it may result that&#160; the many allocated pages are&#160; not physical continuous. This may be not good for I/O merge in the block layer due to the limited segements per block I/O request.&lt;/p&gt;

&lt;p&gt;For testing purposes, we should pre-allocate continuous pages when OSS thread started as much as possible when disable page chace.&lt;/p&gt;</description>
                <environment></environment>
        <key id="55393">LU-12179</key>
            <summary>allocate continuous pages when disabled page caches</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="qian_wc">Qian Yingjin</assignee>
                                    <reporter username="qian_wc">Qian Yingjin</reporter>
                        <labels>
                    </labels>
                <created>Thu, 11 Apr 2019 09:32:40 +0000</created>
                <updated>Thu, 11 Jun 2020 08:09:23 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="245578" author="gerrit" created="Thu, 11 Apr 2019 09:57:04 +0000"  >&lt;p&gt;Yingjin Qian (qian@ddn.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/34644&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/34644&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12179&quot; title=&quot;allocate continuous pages when disabled page caches&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12179&quot;&gt;LU-12179&lt;/a&gt; osd: allocate continuous pages when disabled page caches&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 8e8d1d32ad55786735823135d6ca126f7fadf40d&lt;/p&gt;</comment>
                            <comment id="245752" author="bzzz" created="Mon, 15 Apr 2019 07:45:58 +0000"  >&lt;p&gt;while I understand that SG constraints can prevent large IOs thus limit throughput, I don&apos;t see how this is related to pagecache bypassing. i.e. how pagecache can be doing better in this context.&lt;/p&gt;</comment>
                            <comment id="245754" author="qian_wc" created="Mon, 15 Apr 2019 08:28:50 +0000"  >&lt;p&gt;IIRC, Ihara did a series of tests using obdfilter-survery,&#160; we found that the performace is bad especially when using 64MB RPC size, and SFA backend can not get large I/Os. After analyzed the debug logs, we found the reason is that the physical pages per I/O thread are not continuous reaching SG constranints.&lt;/p&gt;

&lt;p&gt;Current pagechache bypassing allocates pages in need at runtime, when many OSS I/O threads perform IOs concurrently, it may cause that the page allocation is&#160;interleaving between each I/O thread, thus many allocated pages per OSS I/O thread is not physical continuous.&lt;/p&gt;

&lt;p&gt;If we allocate the pages at the start time of OSS threads, it can&#160; avoid the interleaving page allocation, I think. Thus the pages per I/O thread is much more physical-continnous.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Hi Ihara,&lt;/p&gt;

&lt;p&gt;Did you do any testing with this patch? any results?&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Regards,&lt;/p&gt;

&lt;p&gt;Qian&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="245755" author="bzzz" created="Mon, 15 Apr 2019 08:30:32 +0000"  >&lt;p&gt;&amp;gt; Current pagechache bypassing allocates pages in need at runtime&lt;/p&gt;

&lt;p&gt;only once for each thread.&lt;/p&gt;</comment>
                            <comment id="245756" author="qian_wc" created="Mon, 15 Apr 2019 08:49:29 +0000"  >&lt;p&gt;From the code it is once for each I/O if the allocated pages are not enough before reach PTLRPC_MAX__BRW_PAGES.&lt;/p&gt;

&lt;p&gt;If we allocate pages at the start time of I/O threads and start max_threads during OSS setup, then&#160;PTLRPC_MAX_BRW_PAGES pages for each I/O thread are allocated together and it is not interrupt and interleaved by other threads, thus can get much more number of continuous physical pages, I think.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;If allocating pages during I/O at runtime, then there may be many I/O thread needing to allocate page (via call __page_cache_alloc) for IO concurrently...&#160; and obdfilter-suvery may test with I/O size varying from 1M to 64M, these all will make the allocated pyhiscal pages per I/O thread are not continuous...&lt;/p&gt;</comment>
                            <comment id="272569" author="adilger" created="Thu, 11 Jun 2020 08:09:23 +0000"  >&lt;p&gt;Now that there are preallocated BRW pages to avoid page cache overhead, since patch &lt;a href=&quot;https://review.whamcloud.com/32875&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/32875&lt;/a&gt; &quot;&lt;tt&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11347&quot; title=&quot;Do not use pagecache for SSD I/O when read/write cache are disabled&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11347&quot;&gt;&lt;del&gt;LU-11347&lt;/del&gt;&lt;/a&gt; osd: do not use pagecache for I/O&lt;/tt&gt;&quot;, it probably makes sense to update the patch here so those pages can be allocated in larger chunks so that IO submission to the lower storage is more efficient.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="53231">LU-11347</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="55163">LU-12071</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="58216">LU-13309</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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|i00erj:</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>