On Wed, Jun 17, 2020 at 12:32 PM Han Zhou <[email protected]> wrote: > On Thu, Jun 11, 2020 at 5:43 AM <[email protected]> wrote: > > > > From: Numan Siddique <[email protected]> > > > > This patch series handles port binding, datapath binding, ovs interface > changes, > > runtime data changes, sb chassis changes incrementally. > > > > (These patches can also be found here - > > https://github.com/numansiddique/ovn/tree/IP_improvements_v5) > > > > Below are the results of some testing I did with ovn-fake-multinode > > setup > > > > Thanks Numan! Could you put the below test results which show performance > improvement of the patch series in the commit message of the patch: > ovn-controller: Handle runtime data changes in flow output engine? The > information in the cover-letter is not well tracked. > > For the series: > > Acked-by: Han Zhou <[email protected]> >
Thanks a lot for the reviews. Sure I'll do that. I'll wait for reviews from Dumitru before applying. Thanks Numan > > > Test setup > > ------ > > 1. ovn-central fake node running OVN dbs and 2 compute nodes running > > ovn-controller. > > > > 2. Before running the tests, used an existing OVN db with the below > > resources > > No of logical switches - 53 > > No of logical ports - 1256 > > No of logical routers - 9 > > No of logical router ports - 56 > > No of port groups - 152 > > No of logical flows - 45447 > > > > Port bindings on compute-1 - 19 > > Port bindings on compute-2 - 18 > > No of OF flows on compute-1 - 84996 > > No of OF flows on compute-2 - 84901 > > > > 3. The test does the following > > - Creates 2 logical switches (one for each compute node) and connect > to a > > logical router for each compute node. > > - 100 logical ports are created (50 per lswitch), a simple ACL is > added and the address > > set is created for each port. > > - Each port is bound on the respective compute node and the test > > pings the IP of the port (from another port belonging to the same > > lswitch created earlier). > > > > > > Below are the results with OVN master > > > > > > +---------------------------------------------------------------------------------------------------------+ > > | Response Times (sec) > | > > > > +----------------------------------+-------+--------+--------+--------+--------+--------+---------+-------+ > > | action | min | median | 90%ile | 95%ile | > max | avg | success | count | > > > > +----------------------------------+-------+--------+--------+--------+--------+--------+---------+-------+ > > | ovn.create_or_update_address_set | 0.491 | 0.519 | 0.542 | 0.548 | > 0.558 | 0.521 | 100.0% | 100 | > > | ovn.create_or_update_port_group | 0.0 | 0.0 | 0.0 | 0.0 | > 0.001 | 0.0 | 100.0% | 100 | > > | ovn.create_port_group_acls | 0.966 | 1.037 | 1.065 | 1.069 | > 1.07 | 1.037 | 50.0% | 100 | > > | ovn_network.bind_port | 1.242 | 1.341 | 1.397 | 1.409 | > 1.443 | 1.348 | 100.0% | 100 | > > | ovn.bind_ovs_vm | 0.413 | 0.469 | 0.49 | 0.494 | > 0.523 | 0.469 | 100.0% | 100 | > > | ovn.bind_internal_vm | 0.804 | 0.875 | 0.921 | 0.935 | > 0.95 | 0.88 | 100.0% | 100 | > > | ovn_network.wait_port_ping | 6.695 | 7.788 | 7.903 | 11.63 | > 16.124 | 7.997 | 100.0% | 100 | > > | total | 9.271 | 10.318 | 11.269 | 14.047 | > 18.509 | 10.871 | 100.0% | 100 | > > > > +----------------------------------+-------+--------+--------+--------+--------+--------+---------+-------+ > > Load duration: 1087.5742933750153 > > Full duration: 1089.151035308838 > > > > > > Below are the results with these patches > > > > > > +-------------------------------------------------------------------------------------------------------+ > > | Response Times (sec) > | > > > > +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ > > | action | min | median | 90%ile | 95%ile | > max | avg | success | count | > > > > +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ > > | ovn.create_or_update_address_set | 0.484 | 0.506 | 0.53 | 0.536 | > 0.551 | 0.509 | 100.0% | 100 | > > | ovn.create_or_update_port_group | 0.0 | 0.0 | 0.0 | 0.0 | > 0.0 | 0.0 | 100.0% | 100 | > > | ovn.create_port_group_acls | 0.966 | 1.006 | 1.032 | 1.036 | > 1.059 | 1.006 | 50.0% | 100 | > > | ovn_network.bind_port | 1.255 | 1.352 | 1.421 | 1.444 | > 1.516 | 1.352 | 100.0% | 100 | > > | ovn.bind_ovs_vm | 0.411 | 0.455 | 0.472 | 0.476 | > 0.5 | 0.456 | 100.0% | 100 | > > | ovn.bind_internal_vm | 0.806 | 0.893 | 0.968 | 0.989 | > 1.043 | 0.896 | 100.0% | 100 | > > | ovn_network.wait_port_ping | 0.226 | 0.253 | 0.325 | 0.329 | > 0.347 | 0.267 | 100.0% | 100 | > > | total | 2.517 | 3.137 | 3.718 | 3.749 | > 3.797 | 3.135 | 100.0% | 100 | > > > > +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ > > Load duration: 313.99292826652527 > > Full duration: 315.29931354522705 > > > > I ran same tests but with 1000 lports and below are the results with > > these patches > > > > > > +-------------------------------------------------------------------------------------------------------+ > > | Response Times (sec) > | > > > > +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ > > | action | min | median | 90%ile | 95%ile | > max | avg | success | count | > > > > +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ > > | ovn.create_or_update_address_set | 0.483 | 0.555 | 0.6 | 0.615 | > 0.661 | 0.555 | 100.0% | 1000 | > > | ovn.create_or_update_port_group | 0.0 | 0.0 | 0.0 | 0.0 | > 0.002 | 0.0 | 100.0% | 1000 | > > | ovn.create_port_group_acls | 0.973 | 1.101 | 1.176 | 1.195 | > 1.271 | 1.097 | 50.0% | 1000 | > > | ovn_network.bind_port | 1.239 | 1.371 | 1.444 | 1.47 | > 1.557 | 1.373 | 100.0% | 1000 | > > | ovn.bind_ovs_vm | 0.409 | 0.482 | 0.522 | 0.541 | > 0.597 | 0.486 | 100.0% | 1000 | > > | ovn.bind_internal_vm | 0.784 | 0.882 | 0.945 | 0.968 | > 1.063 | 0.887 | 100.0% | 1000 | > > | ovn_network.wait_port_ping | 0.218 | 0.251 | 0.313 | 0.324 | > 0.395 | 0.262 | 100.0% | 1000 | > > | total | 2.465 | 3.251 | 3.956 | 4.016 | > 4.226 | 3.274 | 100.0% | 1000 | > > > > +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ > > Load duration: 3279.292845249176 > > Full duration: 3280.6857619285583 > > > > > > v11 -> v12 > > ---- > > * Rebased the patches to latest master. > > * Add a new patch p7 which changes the signature of some of > > the static functions added recently in binding.c so that the out > > param is the last param. > > > > v10 -> v11 > > ---- > > * The firt 3 patches of v10 are now merged to master. > > * The v11 has now 6 patches. > > * Addressed the review comments from Dumitru. > > * Added another new patch - which adds the util function > > get_unique_lport_key() and use this function in places > > where it was generating this key earlier. > > > > v9 -> v10 > > ---- > > * Addressed review comments. > > * Changed the patch 4 from adding a separate tracking variable in I-P > > engine to just adding a new function - clear_tracked_data() as per > > the review comments. > > * Dropped the patch 9 - "ovn-controller: Handle sbrec_chassis changes > incrementally." > > from the series. I couldn't address the review comments for this patch > in v9. > > Hence dropped this patch for now. I'll work on it later and submit > > the patch separately. > > * Added a new test only patch - patch 9 in ovn-performance.at to test > the > > distributed logical router ports scenario and BFD. > > > > v8 -> v9 > > ---- > > * Addressed the review comments from Dumitru and missed v7 comments from > > Han. > > * Any change to the 'local_lport_ids' while handling the OVS interface > and Port > > binding changes in binding.c is now added to the tracked > > datapaths which was not done earlier. > > * Dropped the check to lflow_evaluate_pb_changes() in flow_output port > > binding handler as it is not required. > > > > v7 -> v8 > > ---- > > * Dropped the patch 4 as it is not needed, thanks to Han. > > * Swapped the patches 5 and 6, which are now patch 4 and 5. The v8 patch > 5 will now make > > use of tracked data support of engine to clear the physical_flow > > changes. > > * Addressed comments from Han. Added comments in Patch 5 and Patch 6. > > > > v6 -> v7 > > ---- > > * Addressed the review comments from Han in patch 1 and patch 2. > > > > v5 -> v6 > > ---- > > * Addressed the review comments from Dumitru. > > * Patch 1 and Patch 2 are significantly changed due to > > further refactoring. > > > > v4 -> v5 > > ---- > > * Applied patch 1 of v4 to master. > > * Addressed the review comments from Han for patch 2. > > * Rebased to latest master. > > > > v3 -> v4 > > ---- > > * A small fix in patch 3 when binding the port for ovs interface > > change. > > * Rebased to latest master. > > > > > > v2 -> v3 > > ---- > > * Added back the patch 5 and 6 and added 4 more patches. So totally > > totally 10 patches in the series > > * Handling the runtime data changes in flow computation. > > * Handling sbrec_chassis changes. > > > > v1 -> v2 > > ------ > > * Addressed the review comments from Han in patch 1, 2 and 3. > > * Removed patch 5 and 6 from the series. As per the comments > > from Han, we should handle runtime data changes in flow output > > engine. But the patch 6 of the series had added a no-op > > handler. So removed these 2 patches until those are addressed. > > > > RFC v2 -> v1 > > --------- > > * Fixed the 2 failing test cases. > > * Updated the commit messages. > > > > > > RFC v1 -> RFC v2 > > --------- > > * Added 2 new patches > > * Patch 5 (ofctrl_check_and_add_flow) was submitted earlier too and > > the previous discussion is here - > https://patchwork.ozlabs.org/patch/1202417/ > > * Patch 6 handles I-P for ct_zone and OVS interface changes in > > flow_output_run stage. > > Numan Siddique (6): > > Refactor binding_run()to take two context argument - binding_ctx_in > > and binding_ctx_out. > > ovn-controller: Refactor binding.c > > ovn-controller: I-P for port binding in runtime_data stage > > ovn-controller: I-P for datapath binding > > ofctrl_check_and_add_flow: Replace the actions of an existing flow if > > actions have changed. > > ovn-controller: I-P for ct zone and OVN > > > > > > Numan Siddique (6): > > I-P engine: Provide the option for an engine to clear tracked engine > > data in every run. > > ovn-controller: I-P for ct zone and OVS interface changes in flow > > output stage. > > ovn-controller: Handle runtime data changes in flow output engine > > tests: Enhance ovn-performance testing by adding gw router port. > > Add an util function get_unique_lport_key() for generating unique > > lport key. > > binding.c: Reorder out params of some of the static functions. > > > > Venkata Anil (1): > > ovn-controller: Use the tracked runtime data changes for flow > > calculation. > > > > controller/binding.c | 263 +++++++++++++++++-------- > > controller/binding.h | 47 ++++- > > controller/lflow.c | 88 ++++++++- > > controller/lflow.h | 12 +- > > controller/ovn-controller.c | 374 +++++++++++++++++++++++++++++++----- > > controller/physical.c | 51 +++++ > > controller/physical.h | 5 +- > > lib/inc-proc-eng.c | 8 + > > lib/inc-proc-eng.h | 9 + > > lib/ovn-util.h | 8 + > > tests/ovn-performance.at | 136 +++++++++++-- > > 11 files changed, 854 insertions(+), 147 deletions(-) > > > > -- > > 2.26.2 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
