<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:20:32 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-8786] Terrible i/o performance of a test application doing repeatable writes and truncates</title>
                <link>https://jira.whamcloud.com/browse/LU-8786</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;A customer application benchmark required for acceptance testing shows terrible i/o performance. A simple test case was created to mimic the customer application behavior. This test never completes when run with a walltime limit of 30 minutes (job is killed after walltime exceeded); the same test run to the /tmp fs on the client node completes within a few seconds. &lt;br/&gt;
The tests completes in few seconds in Lustre-2.1.&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; program iotest
      PARAMETER (NA=6400)
      dimension IA(NA)
      call init (IA,NA)
      call sleep(1)
      open (unit=22, file=&lt;span class=&quot;code-quote&quot;&gt;&apos;time.step&apos;&lt;/span&gt;)
      &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; i=1,na
      call my_write(iA,NA,i)
      end &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt;
      STOP
      END
      SUBROUTINE my_write(IA,NA,I)
      dimension ia(na)
      kt=ia(i)
      WRITE ( 22, &lt;span class=&quot;code-quote&quot;&gt;&apos;(1x, i8)&apos;&lt;/span&gt; )   kt
      REWIND (22)
      &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt;
      end
      subroutine init(IA,NA)
      dimension iA(na)
      &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; i=1,NA
      ia(i)=i
      end &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt;
      &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt;
      end
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="41213">LU-8786</key>
            <summary>Terrible i/o performance of a test application doing repeatable writes and truncates</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="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="3">Duplicate</resolution>
                                        <assignee username="wc-triage">WC Triage</assignee>
                                    <reporter username="zam">Alexander Zarochentsev</reporter>
                        <labels>
                    </labels>
                <created>Tue, 1 Nov 2016 08:56:05 +0000</created>
                <updated>Tue, 4 Dec 2018 13:37:08 +0000</updated>
                            <resolved>Tue, 4 Dec 2018 13:37:08 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="171880" author="gerrit" created="Tue, 1 Nov 2016 08:59:04 +0000"  >&lt;p&gt;Alexander Zarochentsev (alexander.zarochentsev@seagate.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/23502&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/23502&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8786&quot; title=&quot;Terrible i/o performance of a test application doing repeatable writes and truncates&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8786&quot;&gt;&lt;del&gt;LU-8786&lt;/del&gt;&lt;/a&gt; osd: unnecessary truncate in osd_punch()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: fcac693a8f722758c45961a97fa17b75556c0b4d&lt;/p&gt;</comment>
                            <comment id="171881" author="zam" created="Tue, 1 Nov 2016 09:00:59 +0000"  >&lt;p&gt;The patch restores a truncate optimisation lost in obdfilter-&amp;gt;ofd rewrite. It explains why the test works well in Lustre-2.1.&lt;/p&gt;</comment>
                            <comment id="237915" author="zam" created="Tue, 4 Dec 2018 13:36:00 +0000"  >&lt;p&gt;The optimization is already included into &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10048&quot; title=&quot;osd-ldiskfs to truncate outside of main transaction&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10048&quot;&gt;&lt;del&gt;LU-10048&lt;/del&gt;&lt;/a&gt;: osd: async truncate:&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;
@@ -1937,49 +1949,51 @@ &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; osd_punch(&lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; struct lu_env *env, struct dt_object *dt,
        oh = container_of(th, struct osd_thandle, ot_super);
        LASSERT(oh-&amp;gt;ot_handle-&amp;gt;h_transaction != NULL);
 
-       osd_trans_exec_op(env, th, OSD_OT_PUNCH);
+       /* we used to skip truncate to current size to
+        * optimize truncates on OST. with DoM we can
+        * get attr_set to set specific size (MDS_REINT)
+        * and then get truncate RPC which essentially
+        * would be skipped. &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; is bad.. so, disable
+        * &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; optimization on MDS till the client stop
+        * to sent MDS_REINT (LU-11033) -bzzz */
+       &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (osd-&amp;gt;od_is_ost &amp;amp;&amp;amp; i_size_read(inode) == start)
+               RETURN(0);
 
-       tid = oh-&amp;gt;ot_handle-&amp;gt;h_transaction-&amp;gt;t_tid;
+       osd_trans_exec_op(env, th, OSD_OT_PUNCH);
 
        spin_lock(&amp;amp;inode-&amp;gt;i_lock);
+       &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (i_size_read(inode) &amp;lt; start)
+               grow = &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;;
        i_size_write(inode, start);
        spin_unlock(&amp;amp;inode-&amp;gt;i_lock);
        ll_truncate_pagecache(inode, start);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                        <issuelink>
            <issuekey id="48520">LU-10048</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|hzyu1b:</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>