<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:24:52 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-9290] max_pages_per_rpc can&apos;t be smaller than ZFS recordsize</title>
                <link>https://jira.whamcloud.com/browse/LU-9290</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;At a customer we&apos;ve hit &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5718&quot; title=&quot;RDMA too fragmented with router&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5718&quot;&gt;&lt;del&gt;LU-5718&lt;/del&gt;&lt;/a&gt; and were trying to set max_pages_per_rpc to a value lower than 256. This didn&apos;t work. Reading the source showed:&lt;/p&gt;

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

&lt;p&gt;lustre/obdclass/lprocfs_status.c: osc_obd_max_pages_per_rpc_seq_write()&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;chunk_mask = ~((1 &amp;lt;&amp;lt; (cli-&amp;gt;cl_chunkbits - PAGE_CACHE_SHIFT)) - 1);
&lt;span class=&quot;code-comment&quot;&gt;/* max_pages_per_rpc must be chunk aligned */&lt;/span&gt;
val = (val + ~chunk_mask) &amp;amp; chunk_mask;
&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (val == 0 || (ocd-&amp;gt;ocd_brw_size != 0 &amp;amp;&amp;amp;
                 val &amp;gt; ocd-&amp;gt;ocd_brw_size &amp;gt;&amp;gt; PAGE_CACHE_SHIFT)) {
        LPROCFS_CLIMP_EXIT(dev);
        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; -ERANGE;
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;chunkbits is 20. It is set in lustre/osc/osc_request.c:osc_init_grant() to&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;cli-&amp;gt;cl_chunkbits = max_t(&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;, PAGE_SHIFT, ocd-&amp;gt;ocd_grant_blkbits);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and ocd_grant_blkbits is set to 20. It&apos;s comment line says: /* log2 of the backend filesystem blocksize */&lt;/p&gt;

&lt;p&gt;Once I&apos;ve reduced the ZFS recordsize from 1MB to 512kB and remounted the OST, I&lt;br/&gt;
was able to reduce the max_pages_per_rpc.&lt;/p&gt;

&lt;p&gt;I believe that the value set in ocd_grant_blkbits is wrong, and actually should be the ZFS ashif value (i.e. the block size) and not the recordsize.&lt;/p&gt;</description>
                <environment>Lustre 2.9.0&lt;br/&gt;
ZFS based OSTs</environment>
        <key id="45227">LU-9290</key>
            <summary>max_pages_per_rpc can&apos;t be smaller than ZFS recordsize</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="utopiabound">Nathaniel Clark</assignee>
                                    <reporter username="efocht">Erich Focht</reporter>
                        <labels>
                    </labels>
                <created>Tue, 4 Apr 2017 13:14:54 +0000</created>
                <updated>Wed, 20 Feb 2019 17:22:15 +0000</updated>
                                            <version>Lustre 2.9.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                            <comments>
                            <comment id="190696" author="efocht" created="Tue, 4 Apr 2017 13:44:47 +0000"  >&lt;p&gt;The value seems to come from&lt;/p&gt;

&lt;p&gt;lustre/osd-zfs/osd_object.c:osd_mkreg()&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;               rc = -dmu_object_set_blocksize(osd-&amp;gt;od_os, db-&amp;gt;db_object,
                                               osd-&amp;gt;od_max_blksz, 0, oh-&amp;gt;ot_tx);


&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="190757" author="pjones" created="Tue, 4 Apr 2017 19:38:04 +0000"  >&lt;p&gt;Nathaniel&lt;/p&gt;

&lt;p&gt;Could you please advise with this one?&lt;/p&gt;

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

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="190784" author="efocht" created="Tue, 4 Apr 2017 22:51:44 +0000"  >&lt;p&gt;Ignore my previous comment. I have no clue, yet, where the value is being set.&lt;/p&gt;</comment>
                            <comment id="191067" author="jay" created="Thu, 6 Apr 2017 18:42:47 +0000"  >&lt;p&gt;Hi Erich,&lt;/p&gt;

&lt;p&gt;The chunk size comes from &lt;tt&gt;ofd_brw_size&lt;/tt&gt;, which is deduced from &lt;tt&gt;ofd_block_bits&lt;/tt&gt; and then &lt;tt&gt;od_max_blksz&lt;/tt&gt; of ZFS. The reason it has this restriction is because ZFS has huge penalty of doing partial record size writing.&lt;/p&gt;

&lt;p&gt;May I ask why the customer would like to set &lt;tt&gt;max_pages_per_rpc&lt;/tt&gt; to be less than record size? Essentially this will cause every single write to ZFS will be less than a record size.&lt;/p&gt;</comment>
                            <comment id="191099" author="efocht" created="Thu, 6 Apr 2017 23:36:14 +0000"  >&lt;p&gt;Hi Jinshan,&lt;/p&gt;

&lt;p&gt;the issue we have is NEC-37 . We cannot apply the workaround described in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5718&quot; title=&quot;RDMA too fragmented with router&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5718&quot;&gt;&lt;del&gt;LU-5718&lt;/del&gt;&lt;/a&gt; if you leave it this way. Except if we reduce the record size in zfs. I expected to be able to change this, even if the values lead to less performance...&lt;/p&gt;

&lt;p&gt;Best regards&lt;br/&gt;
 Erich&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                                        </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|hzz98f:</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>
                                                                                            <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>