<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:12: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-7898] remove unnecessary declarations from osd-zfs</title>
                <link>https://jira.whamcloud.com/browse/LU-7898</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;in contrast with ldiskfs, declarations in ZFS can be very expensive (even more expensive than execution itself). there are number of declarations in osd-zfs which can be removed safely. &lt;/p&gt;</description>
                <environment></environment>
        <key id="35509">LU-7898</key>
            <summary>remove unnecessary declarations from osd-zfs</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="bzzz">Alex Zhuravlev</assignee>
                                    <reporter username="bzzz">Alex Zhuravlev</reporter>
                        <labels>
                    </labels>
                <created>Tue, 22 Mar 2016 14:25:34 +0000</created>
                <updated>Thu, 2 Feb 2017 16:10:06 +0000</updated>
                            <resolved>Sat, 10 Sep 2016 04:22:21 +0000</resolved>
                                                    <fixVersion>Lustre 2.9.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="146667" author="gerrit" created="Wed, 23 Mar 2016 18:45:10 +0000"  >&lt;p&gt;Alex Zhuravlev (alexey.zhuravlev@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/19101&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/19101&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; osd: remove unnecessary declarations&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: a25217845bc24d21648e8dffc6863a9ccb1813f8&lt;/p&gt;</comment>
                            <comment id="146833" author="bzzz" created="Thu, 24 Mar 2016 18:46:58 +0000"  >&lt;p&gt;I&apos;ve took to-write and to-overwrite estimations for createmany -m and createmany -o, in Kbs. the sum of these estimations then used to reserve space in TXG and ARC.&lt;/p&gt;

&lt;p&gt;clean master:&lt;br/&gt;
createmany -m:&lt;br/&gt;
40 thx  &amp;#8211; 2w=16160 2ov=3072&lt;br/&gt;
createmany -o:&lt;br/&gt;
73 thx &amp;#8211; 2w=27536 2ov=6048&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt;:&lt;br/&gt;
createmany -m:&lt;br/&gt;
12 thx  &amp;#8211; 2w=4592 2ov=1616&lt;br/&gt;
createmany -o:&lt;br/&gt;
25 thx &amp;#8211; 2w=8800 2ov=3472&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; -dnode accounting:&lt;br/&gt;
createmany -m:&lt;br/&gt;
8 thx &amp;#8211; 2w=2800 2ov=1168&lt;br/&gt;
createmany -o:&lt;br/&gt;
17 thx &amp;#8211; 2w=5216 2ov=2576&lt;/p&gt;</comment>
                            <comment id="147005" author="bzzz" created="Sun, 27 Mar 2016 16:36:08 +0000"  >&lt;p&gt;this is how credits are distributed for a single-stripe file creation with this patch, in Kbs:&lt;/p&gt;

&lt;p&gt;8  &amp;#8211; 2w=3568 + 2ov=1040 = 4608&lt;br/&gt;
  0: 2w=112 2ov=0 = 112 	// dmu_object_alloc()&lt;br/&gt;
  6: 2w=896 2ov=112 = 1008 	// dmu_tx_hold_zap(tx, sa-&amp;gt;sa_layout_attr_obj&lt;br/&gt;
  8: 2w=896 2ov=112 = 1008 	// OI&lt;br/&gt;
  136: 2w=384 2ov=112 = 496 	// iusr zap&lt;br/&gt;
  137: 2w=384 2ov=112 = 496 	// igrp zap&lt;br/&gt;
  200: 2w=0 2ov=240 = 240 	// lovobjids&lt;br/&gt;
  169: 2w=896 2ov=112 = 1008 	// dir insert&lt;br/&gt;
  152: 2w=0 2ov=240 = 240 	// last_rcvd&lt;/p&gt;

&lt;p&gt;it&apos;s clear that ZAP&apos;s related credits consume the majority of the whole reservation.&lt;br/&gt;
first of all, it&apos;s currently not very optimal because calculated using SPA_OLD_MAXBLOCKSIZE which is 128K:&lt;/p&gt;

&lt;p&gt;		*towrite += (3 + (add ? 4 : 0)) * SPA_OLD_MAXBLOCKSIZE;&lt;/p&gt;

&lt;p&gt;while by default ZAP&apos;s blocksize:  int fzap_default_block_shift = 14; /* 16k blocksize */&lt;br/&gt;
so, if we change the code to use actual blocksize, then we can shrink that 896K to 112K.&lt;br/&gt;
with dnode allocation move into ZFS, that would lead to ~1M of credits for a single-stripe file creation.&lt;br/&gt;
current master reserves ~33,5MB.&lt;/p&gt;

&lt;p&gt;unlink is still rather heavy due to llog:&lt;br/&gt;
19  &amp;#8211; 2w=5616 + 2ov=2656 = 8272&lt;br/&gt;
  169: 2w=384 2ov=112 = 496 	// dir delete&lt;br/&gt;
  207: 2w=0 2ov=112 = 112 	// first ref_del on child?&lt;br/&gt;
  8:   2w=384 2ov=112 = 496 	// OI&lt;br/&gt;
  136: 2w=384 2ov=112 = 496	// quota usr zap &lt;br/&gt;
  137: 2w=384 2ov=112 = 496 	// quota grp zap&lt;br/&gt;
  207: 2w=0 2ov=224 = 224	// dmu_tx_hold_free(child)&lt;br/&gt;
  204: 2w=0 2ov=240 = 240	// write to llog header&lt;br/&gt;
  204: 2w=256 2ov=112 = 368 	// append to llog&lt;br/&gt;
  142: 2w=0 2ov=240 = 240 	// add new llog to catalog&lt;br/&gt;
  0: 2w=112 2ov=0 = 112 L1 	// new llog object create&lt;br/&gt;
  6: 2w=896 2ov=112 = 1008 	// dmu_tx_hold_zap(tx, sa-&amp;gt;sa_layout_attr_obj&lt;br/&gt;
  8: 2w=896 2ov=112 = 1008	// OI for new llog object&lt;br/&gt;
  136: 2w=384 2ov=112 = 496 	// quota usr zap&lt;br/&gt;
  137: 2w=384 2ov=112 = 496 	// quota grp zap&lt;br/&gt;
  203: 2w=0 2ov=240 = 240 	// init new llog&lt;br/&gt;
  203: 2w=256 2ov=112 = 368 	// write to new llog&lt;br/&gt;
  173: 2w=896 2ov=112 = 1008 	// PENDING&lt;br/&gt;
  207: 2w=0 2ov=128 = 128 	// LinkEA&lt;br/&gt;
  152: 2w=0 2ov=240 = 240 	// last_rcvd&lt;/p&gt;

&lt;p&gt;with dnode accounting moved to ZFS and zap blocksize=16k that would be 2774K.&lt;/p&gt;</comment>
                            <comment id="147006" author="bzzz" created="Sun, 27 Mar 2016 16:49:12 +0000"  >&lt;p&gt;llog is still very expensive.. with the patch a single record needs 4576K reserved:&lt;br/&gt;
reservations per llog record - 4576K:&lt;br/&gt;
  204: 2w=0 2ov=240 = 240	// write to llog header&lt;br/&gt;
  204: 2w=256 2ov=112 = 368 	// append to llog&lt;br/&gt;
  142: 2w=0 2ov=240 = 240 	// add new llog to catalog&lt;br/&gt;
  0: 2w=112 2ov=0 = 112 	// new llog object create&lt;br/&gt;
  6: 2w=896 2ov=112 = 1008 	// dmu_tx_hold_zap(tx, sa-&amp;gt;sa_layout_attr_obj&lt;br/&gt;
  8: 2w=896 2ov=112 = 1008	// OI for new llog object&lt;br/&gt;
  136: 2w=384 2ov=112 = 496 	// quota usr zap&lt;br/&gt;
  137: 2w=384 2ov=112 = 496 	// quota grp zap&lt;br/&gt;
  203: 2w=0 2ov=240 = 240 	// init new llog&lt;br/&gt;
  203: 2w=256 2ov=112 = 368 	// write to new llog&lt;/p&gt;

&lt;p&gt;with dnode accounting moved into ZFS and zap blocksize=16K we can shrink it to 2016K,&lt;br/&gt;
but it&apos;s still a lot. especially when we need to modify few dozen llogs at unlink. say, 128 stripes&lt;br/&gt;
would need 128*2=256MB reserved on disk and in memory.&lt;/p&gt;</comment>
                            <comment id="164748" author="gerrit" created="Fri, 2 Sep 2016 02:24:15 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/19101/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/19101/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; osd: remove unnecessary declarations&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: ead6df2feee9c143b617cb60e50e403c955bd401&lt;/p&gt;</comment>
                            <comment id="164774" author="pjones" created="Fri, 2 Sep 2016 04:49:16 +0000"  >&lt;p&gt;Landed for 2.9&lt;/p&gt;</comment>
                            <comment id="164832" author="gerrit" created="Fri, 2 Sep 2016 16:38:19 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/22293&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/22293&lt;/a&gt;&lt;br/&gt;
Subject: Revert &quot;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; osd: remove unnecessary declarations&quot;&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: cbcd75dc816af495b232577b82bbd37da1c829ca&lt;/p&gt;</comment>
                            <comment id="164835" author="gerrit" created="Fri, 2 Sep 2016 16:43:09 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/22293/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/22293/&lt;/a&gt;&lt;br/&gt;
Subject: Revert &quot;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; osd: remove unnecessary declarations&quot;&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: d16c76ea58f70cdac6c0de0e4fdbe5e329951c33&lt;/p&gt;</comment>
                            <comment id="164837" author="gerrit" created="Fri, 2 Sep 2016 16:57:55 +0000"  >&lt;p&gt;Alex Zhuravlev (alexey.zhuravlev@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/22296&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/22296&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; osd: remove unnecessary declarations&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 7f4123879778e5c94915851240cb2e6d43e1cca2&lt;/p&gt;</comment>
                            <comment id="164861" author="adilger" created="Fri, 2 Sep 2016 19:55:43 +0000"  >&lt;p&gt;Patch was reverted due to build issues.&lt;/p&gt;</comment>
                            <comment id="165566" author="gerrit" created="Sat, 10 Sep 2016 03:23:54 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/22296/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/22296/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7898&quot; title=&quot;remove unnecessary declarations from osd-zfs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7898&quot;&gt;&lt;del&gt;LU-7898&lt;/del&gt;&lt;/a&gt; osd: remove unnecessary declarations&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: f2d4419227806850cee36c54c0028dc43ee02b1f&lt;/p&gt;</comment>
                            <comment id="165580" author="pjones" created="Sat, 10 Sep 2016 04:22:22 +0000"  >&lt;p&gt;Landed for 2.9&lt;/p&gt;</comment>
                            <comment id="183069" author="yong.fan" created="Thu, 2 Feb 2017 16:03:51 +0000"  >&lt;p&gt;Jenkins build failure:&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;13:39:05 /tmp/rpmbuild-lustre-jenkins-hHtDucWf/BUILD/lustre-2.7.19.8/lustre/osd-zfs/osd_oi.c: In function &apos;osd_oi_create&apos;:
13:39:05 /tmp/rpmbuild-lustre-jenkins-hHtDucWf/BUILD/lustre-2.7.19.8/lustre/osd-zfs/osd_oi.c:179: error: &apos;DN_MAX_BONUSLEN&apos; undeclared (first use in this function)
13:39:05 /tmp/rpmbuild-lustre-jenkins-hHtDucWf/BUILD/lustre-2.7.19.8/lustre/osd-zfs/osd_oi.c:179: error: (Each undeclared identifier is reported only once
13:39:05 /tmp/rpmbuild-lustre-jenkins-hHtDucWf/BUILD/lustre-2.7.19.8/lustre/osd-zfs/osd_oi.c:179: error: for each function it appears in.)
13:39:05 make[7]: *** [/tmp/rpmbuild-lustre-jenkins-hHtDucWf/BUILD/lustre-2.7.19.8/lustre/osd-zfs/osd_oi.o] Error 1
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://build.hpdd.intel.com/job/lustre-b_ieel-reviews/4526/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://build.hpdd.intel.com/job/lustre-b_ieel-reviews/4526/&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://build.hpdd.intel.com/job/lustre-b_ieel-reviews/arch=x86_64,build_type=server,distro=el6.8,ib_stack=inkernel/4520/consoleFull&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://build.hpdd.intel.com/job/lustre-b_ieel-reviews/arch=x86_64,build_type=server,distro=el6.8,ib_stack=inkernel/4520/consoleFull&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10120">
                    <name>Blocker</name>
                                            <outwardlinks description="is blocking">
                                        <issuelink>
            <issuekey id="35506">LU-7895</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                                        </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|hzy58v:</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>