[ovs-dev] [PATCH v4 00/10] Incremental processing improvements.
Numan Siddique
numans at ovn.org
Tue May 5 17:12:13 UTC 2020
A very gentle ping.
Thanks
Numan
On Thu, Apr 30, 2020 at 10:28 PM <numans at ovn.org> wrote:
> From: Numan Siddique <numans at ovn.org>
>
> This patch series handles port binding, datapath binding, ovs interface
> changes,
> runtime data changes, sb chassis changes incrementally.
>
> Below are the results of some testing I did with ovn-fake-multinode
> setup
>
> 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
>
>
> 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 OV
>
>
>
> Numan Siddique (9):
> Refactor binding_run() to take two context argument - binding_ctx_in
> and binding_ctx_out.
> ovn-controller: Store the local port bindings in the runtime data I-P
> state.
> ovn-controller: I-P for SB port binding and OVS interface in
> runtime_data.
> 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 OVS interface changes in flow
> output stage.
> I-P engine: Provide the option for an engine to store changed data
> I-P engine: Handle runtime data changes in flow output engine
> I-P: Handle sbrec_chassis changes
>
> Venkata Anil (1):
> I-P: Use the tracked runtime data changes for flow calculation.
>
> controller/binding.c | 1378 ++++++++++++++++++++++++++---------
> controller/binding.h | 66 +-
> controller/lflow.c | 82 ++-
> controller/lflow.h | 14 +-
> controller/ofctrl.c | 23 +-
> controller/ovn-controller.c | 545 ++++++++++----
> controller/ovn-controller.h | 36 +
> controller/physical.c | 51 ++
> controller/physical.h | 8 +-
> controller/pinctrl.c | 1 +
> controller/pinctrl.h | 1 +
> lib/inc-proc-eng.c | 30 +-
> lib/inc-proc-eng.h | 20 +
> tests/ovn-performance.at | 51 +-
> tests/ovn.at | 21 +-
> 15 files changed, 1778 insertions(+), 549 deletions(-)
>
> --
> 2.25.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
More information about the dev
mailing list