<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:53:50 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-12578] obdfilter-survey w/echo-client does not gain from direct-io optimizations</title>
                <link>https://jira.whamcloud.com/browse/LU-12578</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;During testing on SSD platform this was reported:&lt;/p&gt;

&lt;p&gt;CPU usage is in 95-100% range during obdfilter-survey. The perf trace looks very much like if &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; is not applied but it is and OSS caches are disabled.&lt;/p&gt;

&lt;p&gt;This is due to the lifetime of pages vs the obdfilter/obdecho lifetime:&lt;/p&gt;

&lt;p&gt;dt_bufs_get / osd_bufs_get does allocates pages while&lt;br/&gt;
dt_bufs_put / osd_bufs_put marks the pages up-to-date and recycles them.&lt;br/&gt;
This is the typical pattern for longer lived osd threads.&lt;/p&gt;


&lt;p&gt;For obdecho the threads are short lived and so the pattern matches&lt;br/&gt;
init/get/put/fini meaning the survey may not be a clear representation of actual osd performance.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="56474">LU-12578</key>
            <summary>obdfilter-survey w/echo-client does not gain from direct-io optimizations</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="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="stancheff">Shaun Tancheff</assignee>
                                    <reporter username="stancheff">Shaun Tancheff</reporter>
                        <labels>
                    </labels>
                <created>Tue, 23 Jul 2019 15:46:54 +0000</created>
                <updated>Fri, 4 Nov 2022 22:44:27 +0000</updated>
                            <resolved>Thu, 15 Aug 2019 13:49:22 +0000</resolved>
                                                    <fixVersion>Lustre 2.13.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="251886" author="bzzz" created="Tue, 23 Jul 2019 15:51:43 +0000"  >&lt;p&gt;why do you think that osd_bufs_get() allocates the pages? what exact version do you use?&lt;/p&gt;</comment>
                            <comment id="251887" author="stancheff" created="Tue, 23 Jul 2019 15:59:22 +0000"  >&lt;p&gt;cray-2-12 / master&lt;/p&gt;

&lt;p&gt;&lt;b&gt;osd_bufs_get&lt;/b&gt;()&lt;br/&gt;
&#160; -&#160; for (i = 0; i &amp;lt; npages; i+&lt;ins&gt;, lnb&lt;/ins&gt;&lt;ins&gt;) { for (i = 0; i &amp;lt; npages; i&lt;/ins&gt;&lt;ins&gt;, lnb&lt;/ins&gt;+) {&lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160;lnb-&amp;gt;lnb_page = &lt;b&gt;osd_get_page&lt;/b&gt;(env, dt, lnb-&amp;gt;lnb_file_offset, &#160; &#160; &#160;gfp_mask);&lt;/p&gt;

&lt;p&gt;&lt;b&gt;osd_get_page&lt;/b&gt;()&lt;br/&gt;
&#160; &#160; &#160;if (osd_use_page_cache(d)) &lt;/p&gt;
{
&#160; &#160; &#160; &#160; &#160;&#160;//&#160;page from page cache
&#160; &#160; &#160;}
&lt;p&gt; else &lt;/p&gt;
{
&#160; &#160; &#160; &#160; &#160;page = *alloc_page*(gfp_mask);
&#160; &#160; &#160;}


&lt;p&gt;I&apos;ll push a patch a little while ... it&apos;s just a starting off point, feel free the tear it apart &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;&lt;/p&gt;

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

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="251888" author="bzzz" created="Tue, 23 Jul 2019 16:01:51 +0000"  >&lt;p&gt;well, it&apos;s a bit different:&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;
		&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (unlikely(!oti-&amp;gt;oti_dio_pages[cur])) {
			LASSERT(cur &amp;lt; PTLRPC_MAX_BRW_PAGES);
			page = alloc_page(gfp_mask);
			&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!page)
				&lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; NULL;
			oti-&amp;gt;oti_dio_pages[cur] = page;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;oti_dio_pages stores allocated pages within @env&lt;/p&gt;</comment>
                            <comment id="251889" author="stancheff" created="Tue, 23 Jul 2019 16:06:48 +0000"  >&lt;p&gt;For obdfilter &apos;env&apos; doesn&apos;t stay around to hold onto the oti_dio_pages[] long enough ... so it doesn&apos;t get the advantage of the page pooling there.&lt;/p&gt;</comment>
                            <comment id="251890" author="stancheff" created="Tue, 23 Jul 2019 16:09:39 +0000"  >&lt;p&gt;a perf snapshot:&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;    99.84%  [kernel.kallsyms]
            |
            |--80.86%--native_queued_spin_lock_slowpath
            |          |
            |          |--75.52%--_raw_spin_lock
            |          |          |
            |          |          |--36.83%--get_page_from_freelist
            |          |          |          __alloc_pages_nodemask
            |          |          |          |
            |          |          |           --36.73%--osd_bufs_get
            |          |          |                     ofd_preprw_write.isra.34
            |          |          |                     ofd_preprw
            |          |          |                     echo_client_prep_commit.isra.52
            |          |          |                     echo_client_iocontrol
            |          |          |                     class_handle_ioctl
            |          |          |                     obd_class_ioctl
            |          |          |                     do_vfs_ioctl
            |          |          |                     ksys_ioctl
            |          |          |                     __x64_sys_ioctl
            |          |          |                     do_syscall_64
            |          |          |                     entry_SYSCALL_64_after_hwframe
            |          |          |                     __GI___ioctl
            |          |          |
            |          |          |--36.40%--free_pcppages_bulk
            |          |          |          |
            |          |          |           --36.40%--free_unref_page
            |          |          |                     |
            |          |          |                      --36.40%--osd_key_fini
            |          |          |                                key_fini
            |          |          |                                keys_fini.part.48
            |          |          |                                lu_env_fini
            |          |          |                                echo_client_iocontrol
            |          |          |                                class_handle_ioctl
            |          |          |                                obd_class_ioctl
            |          |          |                                do_vfs_ioctl&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="251892" author="gerrit" created="Tue, 23 Jul 2019 16:17:24 +0000"  >&lt;p&gt;Shaun Tancheff (stancheff@cray.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/35596&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/35596&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12578&quot; title=&quot;obdfilter-survey w/echo-client does not gain from direct-io optimizations&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12578&quot;&gt;&lt;del&gt;LU-12578&lt;/del&gt;&lt;/a&gt; obdecho: Reduce CPU needed for obdfilter&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 6466a04bdb9b662afeeb98b33b6afbb09a8c6897&lt;/p&gt;</comment>
                            <comment id="252446" author="adilger" created="Fri, 2 Aug 2019 11:28:33 +0000"  >&lt;p&gt;When you write &quot;obdfilter&quot; in this ticket, it seems you mean &quot;obdfilter-survey&quot; with evho_client?  It is confusing because the code that is now &quot;ofd&quot; was formerly called &quot;obdfilter&quot;. &lt;/p&gt;</comment>
                            <comment id="253077" author="gerrit" created="Thu, 15 Aug 2019 07:55:20 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/35700/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/35700/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12578&quot; title=&quot;obdfilter-survey w/echo-client does not gain from direct-io optimizations&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12578&quot;&gt;&lt;del&gt;LU-12578&lt;/del&gt;&lt;/a&gt; obdecho: reuse an cl env cache for obdecho survey&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 55c33b70c46fde1b62f9852dc361d382a7722009&lt;/p&gt;</comment>
                            <comment id="253110" author="pjones" created="Thu, 15 Aug 2019 13:49:22 +0000"  >&lt;p&gt;Landed for 2.13&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="56780">LU-12707</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|i00k2n:</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>