<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:45:27 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-11618] implement ladvise rpc_size for optimized performance</title>
                <link>https://jira.whamcloud.com/browse/LU-11618</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Originally, the maximum RPC size for bulk I/O can be controlled by&lt;br/&gt;
per-OSC parameter max_pages_per_rpc. Whenever it is possible, the&lt;br/&gt;
OSC will do bulk I/O as large as max_pages_per_rpc for better&lt;br/&gt;
performance. Thus, changing the value of max_pages_per_rpc usually&lt;br/&gt;
affects the I/O performance a lot. However, due to the I/O pattern&lt;br/&gt;
difference, not all applications can get the best performance with&lt;br/&gt;
the same value of max_pages_per_rpc.&lt;/p&gt;

&lt;p&gt;We want to add a new type of ladvise to enabling applications to&lt;br/&gt;
set different RPC sizes for different files. max_pages_per_rpc is&lt;br/&gt;
still the upper limit of the RPC size in all cases. And new&lt;br/&gt;
parameter default_pages_per_rpc has been added and its value is&lt;br/&gt;
the default RPC size. If a ladvise of rpc_size is given to a file,&lt;br/&gt;
the RPC size of the file will be changed according to the ladvise.&lt;br/&gt;
But the maximum RPC size will still limited by max_pages_per_rpc.&lt;/p&gt;

&lt;p&gt;The RPC size of a file configured by ladivse is neither a global&lt;br/&gt;
attribute nor a persistent attribute. Each client may have&lt;br/&gt;
different RPC size for the same file. And the RPC size of the file&lt;br/&gt;
will change back to default_pages_per_rpc when the hint kept in&lt;br/&gt;
memory is lost due to memory shrinkage.&lt;/p&gt;</description>
                <environment></environment>
        <key id="53914">LU-11618</key>
            <summary>implement ladvise rpc_size for optimized performance</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="lixi_wc">Li Xi</assignee>
                                    <reporter username="lixi_wc">Li Xi</reporter>
                        <labels>
                    </labels>
                <created>Mon, 5 Nov 2018 02:19:51 +0000</created>
                <updated>Wed, 7 Nov 2018 07:05:49 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="236304" author="gerrit" created="Mon, 5 Nov 2018 02:23:33 +0000"  >&lt;p&gt;Li Xi (lixi@ddn.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/33573&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/33573&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11618&quot; title=&quot;implement ladvise rpc_size for optimized performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11618&quot;&gt;LU-11618&lt;/a&gt; osc: implement ladvise rpc_size&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: ce387d26f369dec24496eaed4f9213b76bb3f47f&lt;/p&gt;</comment>
                            <comment id="236310" author="adilger" created="Mon, 5 Nov 2018 07:24:27 +0000"  >&lt;p&gt;In the past, the RPC size was also affected by the stripe size, so that applications could specify this on a per-file basis. Also, storing the stripe_size in the file is persistent, and does not require the application to be modified. &lt;/p&gt;</comment>
                            <comment id="236502" author="lixi_wc" created="Wed, 7 Nov 2018 00:49:16 +0000"  >&lt;p&gt;Thanks Andreas. Has this mechanism of stripe-based-RPC-size being changed? I can&apos;t find any related codes now.&lt;/p&gt;

&lt;p&gt;We are thinking of using ladvise hint through MPI ROMIO like &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6179&quot; title=&quot;Lock ahead - Request extent locks from userspace&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6179&quot;&gt;&lt;del&gt;LU-6179&lt;/del&gt;&lt;/a&gt;. That would require some arguments when calling MPI run command, but doesn&apos;t require modification of the appliation. And we are tired of tuning the global RPC size parameter to get good performance.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="236523" author="lixi_wc" created="Wed, 7 Nov 2018 07:01:58 +0000"  >&lt;p&gt;Following is how to use it:&lt;/p&gt;

&lt;p&gt;MGS&lt;br/&gt;
 $ lctl conf_param lipe1-OST*.obdfilter.brw_size=16&lt;br/&gt;
 $ lctl conf_param lipe1-OST*.osc.max_pages_per_rpc=16M&lt;/p&gt;

&lt;p&gt; Client&lt;br/&gt;
 $ mount -t lustre 10.0.1.148@tcp:10.0.1.149@tcp:/lipe1 /mnt/lustre_lipe1&lt;br/&gt;
 $ cat /proc/fs/lustre/osc/lipe1-OST0000-osc-*/default_pages_per_rpc&lt;br/&gt;
 4096&lt;br/&gt;
 $ cat /proc/fs/lustre/osc/lipe1-OST0000-osc-*/max_pages_per_rpc &lt;br/&gt;
 4096&lt;br/&gt;
 $ lfs setstripe -c 1 -i 0 /mnt/lustre_lipe1/file&lt;br/&gt;
 $ dd if=/dev/zero of=/mnt/lustre_lipe1/file bs=1048576 count=10&lt;br/&gt;
 $ cat /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 ...&lt;br/&gt;
 read write&lt;br/&gt;
 pages per rpc rpcs % cum % | rpcs % cum %&lt;br/&gt;
 1: 0 0 0 | 0 0 0&lt;br/&gt;
 2: 0 0 0 | 0 0 0&lt;br/&gt;
 4: 0 0 0 | 0 0 0&lt;br/&gt;
 8: 0 0 0 | 0 0 0&lt;br/&gt;
 16: 0 0 0 | 0 0 0&lt;br/&gt;
 32: 0 0 0 | 0 0 0&lt;br/&gt;
 64: 0 0 0 | 0 0 0&lt;br/&gt;
 128: 0 0 0 | 0 0 0&lt;br/&gt;
 256: 0 0 0 | 0 0 0&lt;br/&gt;
 512: 0 0 0 | 0 0 0&lt;br/&gt;
 1024: 0 0 0 | 0 0 0&lt;br/&gt;
 2048: 0 0 0 | 0 0 0&lt;br/&gt;
 4096: 0 0 0 | 1 100 100&lt;br/&gt;
 ...&lt;br/&gt;
 $ echo &amp;gt; /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 $ echo 256 &amp;gt; /proc/fs/lustre/osc/lipe1-OST0000-osc-*/default_pages_per_rpc&lt;br/&gt;
 $ dd if=/dev/zero of=/mnt/lustre_lipe1/file bs=1048576 count=10&lt;br/&gt;
 $ cat /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 ...&lt;br/&gt;
 read write&lt;br/&gt;
 pages per rpc rpcs % cum % | rpcs % cum %&lt;br/&gt;
 1: 0 0 0 | 0 0 0&lt;br/&gt;
 2: 0 0 0 | 0 0 0&lt;br/&gt;
 4: 0 0 0 | 0 0 0&lt;br/&gt;
 8: 0 0 0 | 0 0 0&lt;br/&gt;
 16: 0 0 0 | 0 0 0&lt;br/&gt;
 32: 0 0 0 | 0 0 0&lt;br/&gt;
 64: 0 0 0 | 0 0 0&lt;br/&gt;
 128: 0 0 0 | 0 0 0&lt;br/&gt;
 256: 0 0 0 | 10 100 100&lt;br/&gt;
 ...&lt;br/&gt;
 $ echo &amp;gt; /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 $ lfs ladvise -a rpcsize -r 16M /mnt/lustre_lipe1/file&lt;br/&gt;
 $ dd if=/dev/zero of=/mnt/lustre_lipe1/file bs=1048576 count=16&lt;br/&gt;
 $ cat /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 ...&lt;br/&gt;
 read write&lt;br/&gt;
 pages per rpc rpcs % cum % | rpcs % cum %&lt;br/&gt;
 1: 0 0 0 | 0 0 0&lt;br/&gt;
 2: 0 0 0 | 0 0 0&lt;br/&gt;
 4: 0 0 0 | 0 0 0&lt;br/&gt;
 8: 0 0 0 | 0 0 0&lt;br/&gt;
 16: 0 0 0 | 0 0 0&lt;br/&gt;
 32: 0 0 0 | 0 0 0&lt;br/&gt;
 64: 0 0 0 | 0 0 0&lt;br/&gt;
 128: 0 0 0 | 0 0 0&lt;br/&gt;
 256: 0 0 0 | 0 0 0&lt;br/&gt;
 512: 0 0 0 | 0 0 0&lt;br/&gt;
 1024: 0 0 0 | 0 0 0&lt;br/&gt;
 2048: 0 0 0 | 0 0 0&lt;br/&gt;
 4096: 0 0 0 | 1 100 100&lt;br/&gt;
 ...&lt;br/&gt;
 $ echo &amp;gt; /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 $ lfs ladvise -a rpcsize -r 4M /mnt/lustre_lipe1/file&lt;br/&gt;
 $ dd if=/dev/zero of=/mnt/lustre_lipe1/file bs=1048576 count=16&lt;br/&gt;
 $ cat /proc/fs/lustre/osc/lipe1-OST0000-osc-*/rpc_stats&lt;br/&gt;
 ...&lt;br/&gt;
 read write&lt;br/&gt;
 pages per rpc rpcs % cum % | rpcs % cum %&lt;br/&gt;
 1: 0 0 0 | 0 0 0&lt;br/&gt;
 2: 0 0 0 | 0 0 0&lt;br/&gt;
 4: 0 0 0 | 0 0 0&lt;br/&gt;
 8: 0 0 0 | 0 0 0&lt;br/&gt;
 16: 0 0 0 | 0 0 0&lt;br/&gt;
 32: 0 0 0 | 0 0 0&lt;br/&gt;
 64: 0 0 0 | 0 0 0&lt;br/&gt;
 128: 0 0 0 | 0 0 0&lt;br/&gt;
 256: 0 0 0 | 0 0 0&lt;br/&gt;
 512: 0 0 0 | 0 0 0&lt;br/&gt;
 1024: 0 0 0 | 4 100 100&lt;br/&gt;
 ...&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="28460">LU-6179</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|i005p3:</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>