neutron/neutron/agent/linux
Kevin Benton d7aeb8dd4b De-dup conntrack deletions before running them
During a lot of port deletions, the OVS agent will
build up a lot of remote security group member updates
for a single device. Once the call to delete all
of the removed remote IP conntrack state gets issued,
there will be many duplicated entries for the same
device in the devices_with_updated_sg_members dicionary
of lists.

This results in many duplicated calls to remove conntrack
entries that are just a waste of time. The longer it takes
to remove conntrack entries, the more of these duplicates
build up for other pending changes, to the point where there
can be hundreds of duplicate calls for a single device.

This just adjusts the conntrack manager clearing logic to
make sure it de-duplicates all of its delete commands before
it issues them.

In a local test on a single host I have 11 threads create
11 ports each, plug them into OVS, and then delete them.
Here are the number of conntrack delete calls issued:

Before this patch - ~232000
With this patch - ~5200

While the remaining number still seems high, the agent is now
fast enough to keep up with all of the deletes.

Closes-Bug: #1513765
Change-Id: Icba88ab47ee17bf5d6ccdfc0f78bec911987ca90
2016-03-16 01:27:46 -07:00
..
openvswitch_firewall Merge "security-groups: Add ipv6 support to ovs firewall" 2016-03-11 00:55:34 +00:00
__init__.py Empty files should not contain copyright or license 2014-10-20 00:50:32 +00:00
async_process.py Use _ from neutron._i18n 2015-12-06 19:39:04 +09:00
bridge_lib.py Check tap bridge timestamps to detect local changes 2016-03-10 03:04:11 -08:00
daemon.py Use _ from neutron._i18n 2015-12-06 19:39:04 +09:00
dhcp.py Make agent interface plugging utilize network MTU 2016-02-29 19:19:25 +00:00
dibbler.py dibbler: fix import order 2015-12-23 10:34:21 -08:00
external_process.py Correct insufficient name for external process in manager log 2016-02-03 07:50:18 +00:00
interface.py Merge "Make agent interface plugging utilize network MTU" 2016-03-02 05:57:01 +00:00
ip_conntrack.py De-dup conntrack deletions before running them 2016-03-16 01:27:46 -07:00
ip_lib.py Merge "macvtap: Macvtap L2 Agent" 2016-03-01 14:49:50 +00:00
ip_link_support.py Use _ from neutron._i18n 2015-12-06 19:39:04 +09:00
ip_monitor.py Ignore possible suffix in iproute commands. 2015-12-10 11:16:12 +02:00
ipset_manager.py IPSet Manager: make code more pythonic 2015-11-01 04:29:47 -08:00
iptables_comments.py Neutron to Drop Router Advts from VM ports 2015-04-24 03:42:07 +00:00
iptables_firewall.py Open vSwitch conntrack based firewall driver 2016-02-16 16:47:21 +00:00
iptables_manager.py Using LOG.warning replace LOG.warn 2016-03-10 11:02:45 -08:00
keepalived.py Fix L3 HA with IPv6 2016-01-15 16:47:39 -05:00
ovsdb_monitor.py Move i18n to _i18n, as per oslo_i18n guidelines 2015-12-01 19:29:10 -07:00
pd.py Fix module's import order 2016-01-22 06:38:42 -08:00
pd_driver.py Fix module's import order 2016-01-22 06:38:42 -08:00
polling.py Don't raise if polling manager is running when stopped 2015-12-21 15:51:48 +00:00
ra.py Support MTU advertisement using IPv6 RAs 2016-02-10 09:59:33 +00:00
tc_lib.py Add support for QoS for LinuxBridge agent 2016-03-01 10:45:02 +00:00
utils.py Don't disable Nagle algorithm in HttpProtocol 2016-02-17 13:56:01 +00:00