Native OVSDB transation commit shows O(n) performance

Bug #1499893 reported by Ryan Moats
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Won't Fix
Low
Ryan Moats

Bug Description

Create 100 tenants each one with the following setup where each router is scheduled to the same legacy node that has the L3 agent configured to use the native OVSDB inerface.

tenant network ------- router ------ external network

Reference http://ibin.co/2GuI6plJvngR for graph of performance during set up of 100 routers.
In the above graph, y-axis is time in seconds, and x-axis is pass through _ovs_add_port (two per router add).

DbSetCommand's performance increases with each router add. To support scale, this needs to be closer to O(1) and perform significantly better than using ovs-vsctl via rootwrap daemon.

Tags: loadimpact
Ryan Moats (rmoats)
Changed in neutron:
importance: High → Medium
tags: added: kilo-backport-potential liberty-rc-potential
Revision history for this message
Ryan Moats (rmoats) wrote :

The above graph incorrectly assigns the transaction commit time to DbSetCommand. The corrected graph is here: http://ibin.co/2HEOucFKZBOv

summary: - Native OVSDB DbSetCommand shows O(n) performance
+ Native OVSDB transation commit shows O(n) performance
Revision history for this message
Ryan Moats (rmoats) wrote :

Last graph for now: http://ibin.co/2HEkX59N4clf - this shows that the problem is within the commit_block code of the native OVSDB library that the native driver depends on itself.

Revision history for this message
Ryan Moats (rmoats) wrote :

Each tenant setup is done with the following neutron cli command set:

    neutron net-create network-$i --tenant-id $id
    neutron subnet-create network-$i 192.168.18.0/24 --name subnet-$i --tenant-id $id
    neutron router-create router-$i --tenant-id $id
    neutron router-gateway-set router-$i test-external
    neutron router-interface-add router-$i subnet-$i

where $i is the tenant number (runs from 1 to 100) and $id is the tenant-id for that tenant

Revision history for this message
Ryan Moats (rmoats) wrote :

This experiment was run in the following three node environment:

controller node
----------------------
running stock trusty tahr (3.13 kernel) + tip of tree devstack/openstack

network node
--------------------
running trusty tahr + 3.19 kernel + tip of tree devstack/openstack,
[ neutron code modified to instrument or profile the router create/update paths ]
configured to run OVS, DHCP, L3 (legacy) and metadata agents

compute node (not used in test, provided for completeness sake)
--------------------
running stock trusty tahr (3.13 kernel) + tip of tree devstack/openstack
configured to run nova-compute and OVS

Steps:
1. Create flat external network with default provider and assign a subnet to it on the controller.
2. Create 100 tenants via keystone on the controller.
For each tenant, run the commands in comment #3
3. Extract information from the instrumentation log from the L3 agent on the network node

Ryan Moats (rmoats)
tags: added: loadimpact
removed: performance
Changed in neutron:
assignee: nobody → Ryan Moats (rmoats)
Akihiro Motoki (amotoki)
tags: added: liberty-backport-potential
removed: liberty-rc-potential
Akihiro Motoki (amotoki)
tags: added: mitaka-backport-potential
Revision history for this message
Ryan Moats (rmoats) wrote :

Lowered the priority on this as it appears to have improved due to improvements in the OVS IDL. We may want to consider moving to using the OVS IDL directly to ensure that we are sharing the same pain points (and making the same performance improvements) as OVS.

Changed in neutron:
importance: Medium → Low
tags: added: scale
Revision history for this message
Ryan Moats (rmoats) wrote :
tags: removed: scale
tags: removed: kilo-backport-potential liberty-backport-potential
tags: removed: mitaka-backport-potential
Revision history for this message
Rodolfo Alonso (rodolfo-alonso-hernandez) wrote :

Bug closed due to lack of activity, please feel free to reopen if needed.

Changed in neutron:
status: New → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.