[OPNFLWPLUG-683] Slow flow addition to operational datastore during 100k flow perf test using Beryllium-SR1 odl-openflowplugin-flow-services-ui Created: 06/May/16  Updated: 27/Sep/21  Resolved: 12/Dec/17

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Marcus G K Williams Assignee: Unassigned
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: All


External issue ID: 5856

 Description   

During testing performance of the OpenFlow Plugin using 100k flows we noticed flow addition takes 300 to 700 seconds to show up in operational datastore using Beryllium-SR1 odl-openflowplugin-flow-services-ui. This is a regression from Beryllium release where the numbers were 50 to 150 seconds.

Reproduction Steps:
1. Setup Controller and install odl-openflowplugin-flow-services-ui:
feature:install odl-openflowplugin-flow-services-ui

2. Start mininet and connect to controller:
sudo mn --controller=remote,ip=127.0.0.1,port=6653 --topo tree,4

3. Open a new shell and run the int/test repo tools/odl-mdsal-clustering-tests/clustering-performance-test/odl_tester.py perf script sending one flow per REST request:
pypy ./odl_tester.py --flows 100000 --threads 5 --timeout 10

The test first starts 5 threads, where each thread programs (adds) 20,000 flows using OpenDaylight authenticated REST API. The tool then waits 10 seconds and deletes all 100k flows.

4. Where mininet is started check flows:
./get-total-found.sh
Switch s1: 6706 flows
Switch s2: 6632 flows
Switch s3: 6604 flows
Switch s4: 6716 flows
Switch s5: 6632 flows
Switch s6: 6574 flows
Switch s7: 6663 flows
Switch s8: 6628 flows
Switch s9: 6809 flows
Switch s10: 6592 flows
Switch s11: 6826 flows
Switch s12: 6607 flows
Switch s13: 6657 flows
Switch s14: 6597 flows
Switch s15: 6757 flows

Total: 100000

5. Wait for test to finish and produce report:
---------------
pypy ./odl_tester.py --flows 100000 --threads 5 --timeout 10

Namespace(bulk_delete=False, flows=100000, fpr=1, host='127.0.0.1', no_delete=False, port='8181', threads=5, timeout=10)
BASELINE:
devices: 15
flows : 0
Added 100000 flows in 45.6335361004 seconds

{204: 100000}

Stats monitoring ...
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
Reported Flows: 13507/100000
...
Reported Flows: 68092/100000
Reported Flows: 68092/100000
Reported Flows: 68092/100000
Reported Flows: 68092/100000
Reported Flows: 68092/100000
Reported Flows: 68092/100000
Reported Flows: 68092/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 85538/100000
Reported Flows: 100000/100000
... monitoring finished in +758 seconds

Flows to be removed: 100000
Removed 100000 flows in 37.0994989872 seconds

{200: 100000}

Stats monitoring ...
Reported Flows: 19/0
Reported Flows: 19/0
Reported Flows: 0/0
... monitoring finished in +2 seconds

addrate 2191.37083263
delrate 2695.45419022

---------------

Note 758 second flow monitoring time above.
This is a regression from Beryllium release where the numbers were 50 to 150 seconds for flow monitoring.



 Comments   
Comment by Miroslav Macko [ 31/Oct/16 ]

Hello Marcus,

I am sorry I get to this only now. Is it still the issue?

If it was not fixed in next SRs, I am afraid according the schedule there will be no other release for Beryllium:

https://wiki.opendaylight.org/view/Simultaneous_Release:Beryllium_Release_Plan#Milestones.2C_Release_Candidates.2C_and_Service_Releases

So we will probably have to close this bug.

For actual master it works. And I suppose it will work also in Boron.

Please let me know, if we can do more on this.

Thanks,
Miro

Comment by Anil Vishnoi [ 12/Dec/17 ]

Beryllium branch is out of support now. Please re-open the bug if you see the issue in carbon/nitrogen/oxygen branch.

Generated at Wed Feb 07 20:33:07 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.