<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:53:34 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>[CONTROLLER-661] Statistics Manager performance poor for large number of flows</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-661</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;The controller was loaded with 10,000 flows, and things went down fairly spectacularly. The controller was running a mininet with 15 nodes, and a script programmed 10k flows randomly (evenly) distributed over the 15 nodes. All 10k flows are written into the config space properly (we have no problem there). &lt;/p&gt;

&lt;p&gt;Things start going really bad when we try to program the flows into mininet. CPU Utilization goes to almost 100% and we start loosing connections to mininet switches. We only manage to program only about 3700 flows (as reported back eventually but the table stats collected from mininet switches). I assume this is because we keep loosing the connection when both the config and oper space start being utilized heavily (stats collection -&amp;gt; oper space plus flows into config space). Since the msgContDump stats (plugin) show 10k enqueued AddFlow messages, I assume the messages got lost either in openflowjava or in the mininet switches themselves (I would suspect openflow java first, because I do not see any real utilization in the mininet switches.)&lt;/p&gt;

&lt;p&gt;As the number of flows increases, stats collection starts taking a disproportionate amount of CPU cycles. Interestingly, the bottleneck does not seem to be the MD-SAL data store, but the codecs. I am attaching the profiler run. &lt;/p&gt;

&lt;p&gt;Things that needs to be fixed:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;figure out how to do flow indexing (&lt;a href=&quot;https://jira.opendaylight.org/browse/OPNFLWPLUG-227&quot; title=&quot;FRM/Statistics Manager: figure out flow indexing&quot; class=&quot;issue-link&quot; data-issue-key=&quot;OPNFLWPLUG-227&quot;&gt;&lt;del&gt;OPNFLWPLUG-227&lt;/del&gt;&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Codecs (which is happening, I guess)&lt;/li&gt;
	&lt;li&gt;See if we can write into the MD-SAL data store in batches, rather than&lt;br/&gt;
  individual stats. &lt;/li&gt;
	&lt;li&gt;Another thought would be to use the DOM API for stats rather than the&lt;br/&gt;
  generated Java APIs.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment>&lt;p&gt;Operating System: Mac OS&lt;br/&gt;
Platform: Macintosh&lt;/p&gt;</environment>
        <key id="25215">CONTROLLER-661</key>
            <summary>Statistics Manager performance poor for large number of flows</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="vdemcak@cisco.com">Vaclav Demcak</assignee>
                                    <reporter username="jmedved@cisco.com">Jan Medved</reporter>
                        <labels>
                    </labels>
                <created>Tue, 5 Aug 2014 04:05:59 +0000</created>
                <updated>Tue, 5 May 2015 15:17:18 +0000</updated>
                            <resolved>Tue, 5 May 2015 15:17:18 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>adsal</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="48799" author="jmedved@cisco.com" created="Tue, 5 Aug 2014 04:05:59 +0000"  >&lt;p&gt;Attachment Call-tree--all-threads-together,-CPU-usage-estimation.zip has been added with description: Profiler output for controller with 10k flows&lt;/p&gt;</comment>
                            <comment id="48800" author="jmedved@cisco.com" created="Tue, 5 Aug 2014 04:07:21 +0000"  >&lt;p&gt;Attachment flow_config_perf copy.py has been added with description: Python script that can be used to add 10k flows&lt;/p&gt;</comment>
                            <comment id="48796" author="vishnoianil@gmail.com" created="Tue, 5 Aug 2014 06:13:00 +0000"  >&lt;p&gt;This is something that is long pending. As of now we do manual comparison to figure out the exact flow where we can augment the stats. This is not going to scale for sure. AFAIK Michal and team is working on using flow cookies as a flow-id and its work in progress. Once its done, we can get rid of customer comparator code we use for flow matching and direct augment stats using the flow-id. That i believe will improve the performance significantly.&lt;/p&gt;</comment>
                            <comment id="48797" author="tony.tkacik@gmail.com" created="Wed, 24 Sep 2014 14:56:47 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/10605/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/10605/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="48798" author="carolsand@gmail.com" created="Tue, 5 May 2015 15:17:18 +0000"  >&lt;p&gt;This bug is part of the project to Move all ADSAL associated component bugs to ADSAL.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="27496">OPNFLWPLUG-228</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="27518">OPNFLWPLUG-250</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="27495">OPNFLWPLUG-227</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="13396" name="Call-tree--all-threads-together,-CPU-usage-estimation.zip" size="16891" author="jmedved@cisco.com" created="Tue, 5 Aug 2014 04:05:59 +0000"/>
                            <attachment id="13397" name="flow_config_perf copy.py" size="8203" author="jmedved@cisco.com" created="Tue, 5 Aug 2014 04:07:21 +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>1484</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=1484]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10372"><![CDATA[Helium-RC2]]></customfieldvalue>

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

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