<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:07:09 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-7235] ZFS: dmu_object_alloc() serializes object creations</title>
                <link>https://jira.whamcloud.com/browse/LU-7235</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;dmu_object_alloc() in ZFS serializes object creations with a mutex:&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;dmu_object_alloc(objset_t *os, dmu_object_type_t ot,
                  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; dmu_object_type_t bonustype,
                  &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; bonuslen, dmu_tx_t *tx)
{
	uint64_t object;
	uint64_t L2_dnode_count = DNODES_PER_BLOCK &amp;lt;&amp;lt;
	    (DMU_META_DNODE(os)-&amp;gt;dn_indblkshift - SPA_BLKPTRSHIFT);
	dnode_t *dn = NULL;
	&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; restarted = B_FALSE;

	mutex_enter(&amp;amp;os-&amp;gt;os_obj_lock);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;this can be a bottleneck holding metadata performance much lower compared to ldiskfs where inode creation is more concurrent.&lt;/p&gt;</description>
                <environment></environment>
        <key id="32397">LU-7235</key>
            <summary>ZFS: dmu_object_alloc() serializes object creations</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="6" iconUrl="https://jira.whamcloud.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</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>
                            <label>zfs</label>
                    </labels>
                <created>Wed, 30 Sep 2015 13:03:02 +0000</created>
                <updated>Thu, 14 Jun 2018 21:39:05 +0000</updated>
                            <resolved>Mon, 18 Sep 2017 12:07:07 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="129220" author="dbrady" created="Fri, 2 Oct 2015 23:15:21 +0000"  >&lt;p&gt;Initial observation&lt;/p&gt;

&lt;p&gt;The &lt;tt&gt;os_obj_lock&lt;/tt&gt; lock only protects &lt;tt&gt;os-&amp;gt;os_obj_next&lt;/tt&gt;. Note there are over &lt;b&gt;100&lt;/b&gt; additional mutex acquired while holding it.&lt;/p&gt;

&lt;p&gt;It looks like we can narrow the lock window by dropping it after we successfully holding the free dnode we found. As far as I can tell, the &lt;tt&gt;os_obj_lock&lt;/tt&gt; lock does not need to be held across &lt;tt&gt;dnode_allocate()&lt;/tt&gt; and &lt;tt&gt;dnode_rele()&lt;/tt&gt;. Base on an ftrace forward call graph, it looks like that would cut the lock held duration from 948us down to 236us.&lt;/p&gt;

&lt;p&gt;See the attached call graph (line 153) for more context.&lt;/p&gt;</comment>
                            <comment id="208562" author="adilger" created="Sat, 16 Sep 2017 07:44:45 +0000"  >&lt;p&gt;I suspect this ticket can be closed, based on landings to upstream ZFS?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10120">
                    <name>Blocker</name>
                                            <outwardlinks description="is blocking">
                                        <issuelink>
            <issuekey id="17129">LU-2600</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="19104" name="dmu_object_alloc-call-graph.txt" size="123916" author="dbrady" created="Fri, 2 Oct 2015 23:12:31 +0000"/>
                    </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|hzxp4v:</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>