Public bug reported: When restarting neutron-plugin-openvswitch-agent, the plugin goes through a series of initialization calls, many of which call out to ovs- vsctl to set up things like the integration bridge, tun bridge and all the flows.
I've seen this __init__() process take upwards of 2 hours (!) to complete on a small (<100 compute node) zone. Most of the time is spent spawning rootwrap'd calls to ovs-vsctl to set up the various tunnels, flows and bridges. ovs-vsctl can take a series of action arguments in the same CLI statement, and will perform those actions as an atomic unit. At the very least, the plugin's __init__() function's setup_xxx() subroutines should take advantages of this instead of looping over possibly dozens or hundreds of port and flows, each with a separate subprocess call out to utils.execute('ovs.vsctl...'). ** Affects: neutron Importance: Undecided Status: New ** Tags: low-hanging-fruit performance ** Summary changed: - openvswitch agent plugin should execute a single ovs-vsctl CLI statement on __init__() + openvswitch agent plugin should execute batched ovs-vsctl CLI statements on __init__() -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1264608 Title: openvswitch agent plugin should execute batched ovs-vsctl CLI statements on __init__() Status in OpenStack Neutron (virtual network service): New Bug description: When restarting neutron-plugin-openvswitch-agent, the plugin goes through a series of initialization calls, many of which call out to ovs-vsctl to set up things like the integration bridge, tun bridge and all the flows. I've seen this __init__() process take upwards of 2 hours (!) to complete on a small (<100 compute node) zone. Most of the time is spent spawning rootwrap'd calls to ovs-vsctl to set up the various tunnels, flows and bridges. ovs-vsctl can take a series of action arguments in the same CLI statement, and will perform those actions as an atomic unit. At the very least, the plugin's __init__() function's setup_xxx() subroutines should take advantages of this instead of looping over possibly dozens or hundreds of port and flows, each with a separate subprocess call out to utils.execute('ovs.vsctl...'). To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1264608/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp