neutron/neutron/agent/l3
LIU Yulong 0b9f4f275c Dynamically increase l3 router process queue green pool size
There is a race condition between nova-compute boots instance and
l3-agent processes DVR (local) router in compute node. This issue
can be seen when a large number of instances were booted to one
same host, and instances are under different DVR router. So the
l3-agent will concurrently process all these dvr routers in this
host at the same time.
For now we have a green pool for the router ResourceProcessingQueue
with 8 greenlet, but some of these routers can still be waiting, event
worse thing is that there are time-consuming actions during the router
processing procedure. For instance, installing arp entries, iptables
rules, route rules etc.
So when the VM is up, it will try to get meta via the local proxy
hosting by the dvr router. But the router is not ready yet in that
host. And finally those instances will not be able to setup some
config in the guest OS.

This patch adds a new measurement based on the router quantity to
indicate the L3 router process queue green pool size. The pool size
will be limit from 8 (original value) to 32, because we do not want
the L3 agent cost too much host resource on processing router in the
compute node.

Conflicts:
    neutron/tests/functional/agent/l3/test_legacy_router.py


Related-Bug: #1813787
Change-Id: I62393864a103d666d5d9d379073f5fc23ac7d114
(cherry picked from commit 837c9283ab)
2020-05-26 15:30:13 +00:00
..
extensions Not process port forwarding if no snat functionality 2019-04-30 01:39:50 +00:00
__init__.py Move classes out of l3_agent.py 2014-12-10 15:19:28 -07:00
agent.py Dynamically increase l3 router process queue green pool size 2020-05-26 15:30:13 +00:00
dvr.py Revert "DVR: Fix allowed_address_pair IP, ARP table update by neutron agent" 2018-06-07 15:32:20 +00:00
dvr_edge_ha_router.py Do not link up HA router gateway in backup node 2020-04-09 21:15:31 +02:00
dvr_edge_router.py Do not initialize snat-ns twice 2020-02-25 01:54:15 +00:00
dvr_fip_ns.py DVR: Correctly change MTU in fip namespace 2019-04-12 06:27:23 +00:00
dvr_local_router.py Packets getting lost during SNAT with too many connections 2019-06-04 23:23:07 +00:00
dvr_router_base.py Make code follow log translation guideline 2017-08-14 02:01:48 +00:00
dvr_snat_ns.py Switch isolated metadata proxy to bind to 169.254.169.254 2019-02-12 10:30:25 +00:00
fip_rule_priority_allocator.py Fix two spelling mistakes 2016-05-30 01:58:04 +00:00
ha.py Merge "Do not link up HA router gateway in backup node" into stable/rocky 2020-04-23 04:48:53 +00:00
ha_router.py Do not link up HA router gateway in backup node 2020-04-09 21:15:31 +02:00
item_allocator.py DVR: Check for item_allocator key before releasing 2018-04-04 11:47:41 -07:00
keepalived_state_change.py Remove rootwrap configuration from neutron-keepalived-state-change 2019-05-21 20:30:35 +00:00
l3_agent_extension_api.py Merge "Add a new method get_router_info to L3 agent extension API" 2017-10-22 17:00:22 +00:00
l3_agent_extensions_manager.py Add a new method ha_state_change to L3 agent extension 2017-10-18 09:41:38 +07:00
legacy_router.py Remove deprecated send_arp_for_ha option 2017-04-18 13:38:35 -04:00
link_local_allocator.py spelling error: 2016-06-30 10:17:18 +08:00
namespace_manager.py Change ip_lib network namespace code to use pyroute2 2017-10-04 21:09:28 +00:00
namespaces.py Disable IPv6 forwarding by default on HA routers 2018-05-31 20:19:21 +00:00
router_info.py Do not link up HA router gateway in backup node 2020-04-09 21:15:31 +02:00