<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:28:30 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-16611] default read_cache_enable=0 not always the best choice when rotational=0</title>
                <link>https://jira.whamcloud.com/browse/LU-16611</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;&lt;tt&gt;read_cache_enable&lt;/tt&gt; is disabled by default if &lt;tt&gt;queue/rotational=0&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;I wanted to raise awareness that this might not be the best default value. I recently noticed that, at least on recent hardware (eg. AMD EPYC Milan) with SAS-based SSDs (not NVMe), it is more efficient to keep &lt;tt&gt;read_cache_enable&lt;/tt&gt; enabled to improve the read performance with many fio benchmarks I ran (sequential I/Os and random I/Os), at least the ones that could benefit from OSS caching (I was careful to not benchmark the client cache...).&lt;/p&gt;

&lt;p&gt;This is at least my experience with SAS SSDs, but I understand it might be better to keep the OSS read cache disabled with NVMe drives when accessed directly.&lt;/p&gt;</description>
                <environment>osd-ldiskfs</environment>
        <key id="74908">LU-16611</key>
            <summary>default read_cache_enable=0 not always the best choice when rotational=0</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="wc-triage">WC Triage</assignee>
                                    <reporter username="sthiell">Stephane Thiell</reporter>
                        <labels>
                    </labels>
                <created>Thu, 2 Mar 2023 03:15:34 +0000</created>
                <updated>Wed, 8 Mar 2023 05:36:45 +0000</updated>
                                            <version>Lustre 2.12.9</version>
                    <version>Lustre 2.15.2</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="364806" author="adilger" created="Fri, 3 Mar 2023 09:58:41 +0000"  >&lt;p&gt;Stephane, I believe that this parameter is careful not to override any value set by the config, so it should be possible to change it in the normal manner (ie &quot;&lt;tt&gt;lctl set_param -P&lt;/tt&gt;&quot;. &lt;/p&gt;

&lt;p&gt;Also, since this only affects the in-memory cache, there is no problem if it is not set in the &quot;ideal&quot; manner for a second or two after mount while the OSS is applying the config parameters from the MGS. &lt;/p&gt;

&lt;p&gt;Since we have very little information available to the filesystem (it was a challenge even getting &quot;&lt;tt&gt;rotational&lt;/tt&gt;&quot; tone set consistently for the storage), I don&apos;t think it is practical for Lustre to auto-tune this based on the specific storage type.&lt;/p&gt;

&lt;p&gt;Would this be best handled by describing the various options in the Lustre Operations Manual?&lt;/p&gt;</comment>
                            <comment id="365035" author="sthiell" created="Tue, 7 Mar 2023 01:03:26 +0000"  >&lt;p&gt;Andreas, thanks for your reply, that makes sense. With servers&apos; memory performance increasing and probably the Linux page cache&apos;s performance also improving (not sure of that), it might be worth adding a note in the manual.&lt;/p&gt;

&lt;p&gt;Today the Lustre manual says:&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;By default, read cache is enabled (read_cache_enable=1) for HDD OSDs and automatically disabled for flash OSDs (nonrotational=1).&#160;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Perhaps adding something like that would be a good general guidance:&lt;/p&gt;

&lt;p&gt;However, depending on the hardware (performance of flash storage, type of server), it might be still beneficial to enable read_cache_enable with flash OSD. This can be done permanently with lctl set_param -P ....&lt;/p&gt;</comment>
                            <comment id="365209" author="adilger" created="Wed, 8 Mar 2023 05:36:45 +0000"  >&lt;p&gt;Patches welcome &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; You can also use the LU ticket to submit a patch to the manual, no need for a separate LUDOC ticket. &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|i03fhj:</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>