Set binding profile directly from OVNTrunkDriver (redo cont.)
This is a tweak to changes done to fix bug 1834637. Specifically,
this change addresses scaling. The previous gerrit change had
modifications to all OVN sub-ports performed as a single
transaction. That did not account for race-condition on neutron
DB queries, which leads to timeouts under heavy loads.
Another cleanup done by this change is to fold an additional
update on neutron db into ovn trunk driver. That saves
update from doing another database transaction, thus making
it faster. The no longer needed function in mech_driver was
called _update_subport_host_if_needed
By breaking the iteration into multiple transactions, the
change in time is marginal:
from 34.2 sec to 35.6 for 50%ile
from 35.6 sec to 36.1 for 95%ile
This patch doesn't go to master as it's frozen now because of
the code being merged to Neutron. The patch will be sent to master
Neutron once code migration is finished.
Change-Id: I7de3ac2a7cf8869ead8ab5fbb34a9861a96d3a0c
Closes-Bug: #1834637
Co-authored-by: Maciej Józefczyk <email address hidden>
Reviewed: https:/ /review. opendev. org/698863 /git.openstack. org/cgit/ openstack/ networking- ovn/commit/ ?id=c418dd720b9 be9047d779f3240 7c474e90cb0002
Committed: https:/
Submitter: Zuul
Branch: stable/train
commit c418dd720b9be90 47d779f32407c47 4e90cb0002
Author: Flavio Fernandes <email address hidden>
Date: Fri Nov 22 15:11:48 2019 -0500
Set binding profile directly from OVNTrunkDriver (redo cont.)
This is a tweak to changes done to fix bug 1834637. Specifically,
this change addresses scaling. The previous gerrit change had
modifications to all OVN sub-ports performed as a single
transaction. That did not account for race-condition on neutron
DB queries, which leads to timeouts under heavy loads.
Another cleanup done by this change is to fold an additional subport_ host_if_ needed
update on neutron db into ovn trunk driver. That saves
update from doing another database transaction, thus making
it faster. The no longer needed function in mech_driver was
called _update_
By breaking the iteration into multiple transactions, the
change in time is marginal:
Service-level agreement create_ trunk
NeutronTrunks :: neutron.
from 34.2 sec to 35.6 for 50%ile
from 35.6 sec to 36.1 for 95%ile
This patch doesn't go to master as it's frozen now because of
the code being merged to Neutron. The patch will be sent to master
Neutron once code migration is finished.
Change-Id: I7de3ac2a7cf886 9ead8ab5fbb34a9 861a96d3a0c
Closes-Bug: #1834637
Co-authored-by: Maciej Józefczyk <email address hidden>