[ovs-dev] [PATCH ovn v12 0/7] Incremental processing improvements.

Numan Siddique numans at ovn.org
Wed Jun 17 07:52:57 UTC 2020


On Wed, Jun 17, 2020 at 12:32 PM Han Zhou <hzhou at ovn.org> wrote:

> On Thu, Jun 11, 2020 at 5:43 AM <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.
> >
> > (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 <hzhou at ovn.org>
>

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
> > dev at openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>


More information about the dev mailing list