add Port_Binding to lookup_table

Currently the index logical_port on Port_Binding
is missing because autocreate_indices() skips
indexes with multiple columns:
-> "indexes": [["datapath", "tunnel_key"], ["logical_port"]]

This slows down the ovn-bgp-agent at scale(31060 Port_Binding
entries) heavily. (See bug #https://bugs.launchpad.net/ovn-bgp-agent/+bug/2045892)

Full sync iteration:
Without Port_Binding index: ~6min
With Port_Binding index: ~5sec

Closes-Bug: #2045892
Change-Id: I815c695fd8a5e12a94e02a7a29da8aadc99541c4
This commit is contained in:
Max Lamprecht 2023-12-07 11:35:59 +01:00
parent dae455b6ee
commit a8ea64e028
1 changed files with 3 additions and 0 deletions

View File

@ -21,6 +21,9 @@ class OvnSbApiIdlImpl(ovs_idl.Backend, api.API):
lookup_table = {
'Chassis': idlutils.RowLookup('Chassis', 'name', None),
'MAC_Binding': idlutils.RowLookup('MAC_Binding', 'ip', None),
'Port_Binding': idlutils.RowLookup(
'Port_Binding', 'logical_port', None
),
}
def chassis_add(self, chassis, encap_types, encap_ip, may_exist=False,