<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:14:20 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>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[NETCONF-170] Poor performance of MDSAL Northbound mapped on a Netconf connector</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-170</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;When RestPerfClient is run on MDSAL Northbound directly, the MDSAL Northbound manages to serve over 400 requests per second. However when it is run on MDSAL Northbound mapped on a Netconf Connector, the request rate drops significantly. The RestPerfClient output log attached to &lt;a href=&quot;https://jira.opendaylight.org/browse/NETCONF-169&quot; title=&quot;RestPerfClient: Invalid requests rate reported when a thread times out&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NETCONF-169&quot;&gt;&lt;del&gt;NETCONF-169&lt;/del&gt;&lt;/a&gt; suggests it is below 220 per second but the exact rate could not be determined because of &lt;a href=&quot;https://jira.opendaylight.org/browse/NETCONF-169&quot; title=&quot;RestPerfClient: Invalid requests rate reported when a thread times out&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NETCONF-169&quot;&gt;&lt;del&gt;NETCONF-169&lt;/del&gt;&lt;/a&gt; combined with lack of support for configuring the timeouts in RestPerfClient (which is a new feature) in the performance test suite.&lt;/p&gt;

&lt;p&gt;Yes, I expect a performance drop when going through a Netconf connector versus going directly but a performance drop of over 50% is way too severe.&lt;/p&gt;

&lt;p&gt;Looking into the logs reveals massive amount of &quot;Timing out for 1 session(s) with id &amp;lt;24-to-26-random-chars&amp;gt;&quot; warnings emitted during the time when RestPerfClient emitting the requests to the Netconf connector mapped MDSAL Northbound.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="21183">NETCONF-170</key>
            <summary>Poor performance of MDSAL Northbound mapped on a Netconf connector</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <status id="5" iconUrl="https://jira.opendaylight.org/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="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="jbehran@cisco.com">Jozef Behran</reporter>
                        <labels>
                    </labels>
                <created>Tue, 22 Mar 2016 09:34:46 +0000</created>
                <updated>Fri, 15 Mar 2019 22:22:22 +0000</updated>
                            <resolved>Thu, 13 Apr 2017 11:48:55 +0000</resolved>
                                                                    <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="39288" author="andrej.mak@pantheon.tech" created="Mon, 12 Sep 2016 13:04:18 +0000"  >&lt;p&gt;Hi, if you compare steps executed during direct and mountpoint access to ODL datastore, you can see, that access via netconf connector is much more complex.&lt;/p&gt;

&lt;p&gt;Direct approach:&lt;br/&gt;
1. HTTP server&lt;br/&gt;
2. URL, XXL -&amp;gt; YangInstanceIdentifier, NormalizedNode&lt;br/&gt;
3. Datastore write&lt;/p&gt;

&lt;p&gt;Via netconf connector&lt;br/&gt;
1. HTTP server&lt;br/&gt;
2. URL, XXL -&amp;gt; YangInstanceIdentifier, NormalizedNode&lt;br/&gt;
3. YangInstanceIdentifier, NormalizedNode -&amp;gt; Netconf RPC XML&lt;br/&gt;
4. Netconf southbound Netty client - exi handlers, ssh, network io&lt;br/&gt;
5. Netconf northbound Netty server - exi handlers, ssh, network io&lt;br/&gt;
6. Netconf RPC XML -&amp;gt; YangInstanceIdentifier, NormalizedNode&lt;br/&gt;
7. Datastore write&lt;/p&gt;

&lt;p&gt;Additionally, netconf mountpoint write transaction operations are implemented as sequence of multiple netconf rpcs (lock, edit-config, commit, unlock)&lt;br/&gt;
which causes additional network io overhead.&lt;/p&gt;

&lt;p&gt;&quot;Timing out for 1 session(s) with id &amp;lt;24-to-26-random-chars&amp;gt;&quot; warnings are logged by restconf and shouldn&apos;t affect this issue.&lt;/p&gt;

&lt;p&gt;I&apos;ve also profiled ODL under this test and haven&apos;t found spots suitable for optimalization.&lt;/p&gt;</comment>
                            <comment id="39293" author="pgubka@cisco.com" created="Tue, 3 Jan 2017 15:08:08 +0000"  >&lt;p&gt;Attachment 5581.zip has been added with description: job files&lt;/p&gt;</comment>
                            <comment id="39289" author="pgubka@cisco.com" created="Tue, 3 Jan 2017 15:09:37 +0000"  >&lt;p&gt;All the scale jobs are hitting the same problem, that sending rest requests using netconf connector takes too long.&lt;br/&gt;
At the moment (Jan03) it takes so long that ssh session is broken during the test and we dont see the poor performance.&lt;br/&gt;
All jobs affected: netconf-csit-1node-periodic-scale-&amp;lt;all|only&amp;gt;-&amp;lt;beryllium,boron,carbon&amp;gt;&lt;/p&gt;

&lt;p&gt;Using refs/changes/68/49468/8 the test was done and all files are attached. The performance drop is seen comparing restperfclient-&lt;del&gt;netconf-scale-txt-Mdsal&lt;/del&gt;&lt;del&gt;direct.log.gz and restperfclient&lt;/del&gt;&lt;del&gt;netconf-scale-txt-Mdsal&lt;/del&gt;-netconf-connector.log.gz.&lt;/p&gt;

&lt;p&gt;13:11:03.692 &lt;span class=&quot;error&quot;&gt;&amp;#91;main&amp;#93;&lt;/span&gt; INFO  o.o.n.t.t.c.http.perf.RestPerfClient - FINISHED. Execution time: 11.66 min&lt;br/&gt;
13:11:03.698 &lt;span class=&quot;error&quot;&gt;&amp;#91;main&amp;#93;&lt;/span&gt; INFO  o.o.n.t.t.c.http.perf.RestPerfClient - Requests per second: 7.148453360630894&lt;br/&gt;
vs.&lt;br/&gt;
2:59:21.266 &lt;span class=&quot;error&quot;&gt;&amp;#91;main&amp;#93;&lt;/span&gt; INFO  o.o.n.t.t.c.http.perf.RestPerfClient - FINISHED. Execution time: 20.38 s&lt;br/&gt;
12:59:21.274 &lt;span class=&quot;error&quot;&gt;&amp;#91;main&amp;#93;&lt;/span&gt; INFO  o.o.n.t.t.c.http.perf.RestPerfClient - Requests per second: 245.30245793062846&lt;/p&gt;

&lt;p&gt;Drop in performance from 245 req/s to 7 req/s is too significant even if the netconf connector path is more complicated.&lt;/p&gt;</comment>
                            <comment id="39290" author="andrej.mak@pantheon.tech" created="Thu, 16 Feb 2017 09:17:04 +0000"  >&lt;p&gt;Exi handler optimization&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/51834/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/51834/&lt;/a&gt;&lt;br/&gt;
Merge empty list instead of exist-check&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/51866/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/51866/&lt;/a&gt;&lt;br/&gt;
If it is possible, read only list entry instead of whole list for filtering&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/51643/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/51643/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With these patches, test shouldn&apos;t fail on timeout and it should make ~22 requests/s. &lt;br/&gt;
When ssh is disabled, test can do more than 100 reqests/s, so there may be spots for further optimization in netconf SSH handling.&lt;/p&gt;</comment>
                            <comment id="39291" author="rovarga" created="Tue, 28 Feb 2017 13:11:57 +0000"  >&lt;p&gt;I think the results are fine. We know the SSH integration needs major surgery to get the performance we would like, especially in case of single-threaded access.&lt;/p&gt;</comment>
                            <comment id="39292" author="andrej.mak@pantheon.tech" created="Thu, 13 Apr 2017 11:48:55 +0000"  >&lt;p&gt;Netconf SSH pipeline improvements are tracked here:&lt;br/&gt;
&lt;a href=&quot;https://bugs.opendaylight.org/show_bug.cgi?id=2484&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://bugs.opendaylight.org/show_bug.cgi?id=2484&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="12665" name="5581.zip" size="391700" author="pgubka@cisco.com" created="Tue, 3 Jan 2017 15:08:08 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5581</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=5581]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10305"><![CDATA[Improvement]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i01wvz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>