Currently, the dhcp Provisioning of ports is the crucial bottleneck
of that concurrently boot multiple VM.
The root cause is that these ports will be processed one by one by dhcp
agent when they belong to the same network, And the 'Provisioning complete'
port is still blocked other port's processing in other dhcp agents. The
patch aim to optimize the dispatch strategy of the port cast to agent to
improve the Provisioning process.
In server side, I classify messages to multi levels. Especially, I classify
the port_update_end or port_create_end message to two levels, the high-level
message only cast to one agent, the low-level message cast to all agent. In
agent side I put these messages to `resource_processing_queue`, with the queue,
We can delete `_net_lock` and process these messages in order of priority.
Additonally, I modified the `resource_processing_queue` for my demand. I update
`_queue` from LIST to PriorityQueue in `ExclusiveResourceProcessor`, by this
way, we can sort all message which cached in `ExclusiveResourceProcessor` by
priority.
Reviewed: https:/ /review. openstack. org/626830 /git.openstack. org/cgit/ openstack/ neutron/ commit/ ?id=99f4495c940 011293e3cabbb59 0770dc1e7b6900
Committed: https:/
Submitter: Zuul
Branch: master
commit 99f4495c9400112 93e3cabbb590770 dc1e7b6900
Author: yangjianfeng <email address hidden>
Date: Fri Dec 21 14:08:38 2018 +0800
Improve port dhcp Provisioning
Currently, the dhcp Provisioning of ports is the crucial bottleneck
of that concurrently boot multiple VM.
The root cause is that these ports will be processed one by one by dhcp
agent when they belong to the same network, And the 'Provisioning complete'
port is still blocked other port's processing in other dhcp agents. The
patch aim to optimize the dispatch strategy of the port cast to agent to
improve the Provisioning process.
In server side, I classify messages to multi levels. Especially, I classify processing_ queue`, with the queue,
the port_update_end or port_create_end message to two levels, the high-level
message only cast to one agent, the low-level message cast to all agent. In
agent side I put these messages to `resource_
We can delete `_net_lock` and process these messages in order of priority.
Additonally, I modified the `resource_ processing_ queue` for my demand. I update rceProcessor` , by this rceProcessor` by
`_queue` from LIST to PriorityQueue in `ExclusiveResou
way, we can sort all message which cached in `ExclusiveResou
priority.
Related-Bug: #1760047 b012fe882259ef1 81070beccef
Change-Id: I255caa0571c42f