On 11/23/22 09:50, Dumitru Ceara wrote:
> On 11/22/22 21:11, Mark Michelson wrote:
>> For the series:
>>
>> Acked-by: Mark Michelson <[email protected]>
> 
> Thanks, Mark, for the review!
> 
> Han, I know you were testing v2, I'll wait for your confirmation before
> merging v3.
> 

It seems we have two ways forward with this series:

a. merge v3 and use the time between branch-22.12 creation and release
to address any new concerns about it.
b. give it a couple more days for though and, if nothing critical needs
to change, merge it after the branch is created (pushing it to the 22.12
branch as well).

In a private discussion earlier Mark and Numan agreed with "b" so I'll
be waiting a few more days for feedback on this series.

Thanks,
Dumitru

>>
>> The lexer_str thing on patch 3 is ... interesting :)
>>
> 
> I'm open to suggestions. :)
> 
> Thanks,
> Dumitru
> 
>> On 11/22/22 09:14, Dumitru Ceara wrote:
>>> Sometimes network components are compute node-specific.  Sometimes such
>>> components are replicated, almost identically, for multiple nodes
>>> in the cluster.
>>>
>>> One such example is the case of Kubernetes NodePort services which
>>> translate (in the ovn-kubernetes case) to Load_Balancer
>>> objects being applied to each and every node's logical gateway router.
>>> These load balancers are almost identical, the main difference being
>>> the fact that they use different VIPs (the node's IP).
>>>
>>> With the current OVN load balancer design, this becomes a problem at
>>> scale because the number of load balancers that must be configured is
>>> N x M (N nodes times M services).
>>>
>>> This series proposes a new concept in OVN: virtual network component
>>> templates.  The goal of the templates is to help reduce resource
>>> consumption in the OVN central components in specific cases like the one
>>> described above.
>>>
>>> To achieve that, the CMS will instead configure a "templated" load
>>> balancer for every service and apply that single template record to
>>> the cluster-wide load balancer group.  This template is then
>>> instantiated differently on different compute nodes.  This translation
>>> is controlled through per-chassis "template variables" configured by
>>> the CMS in the new NB.Template_Var table.
>>>
>>> Patch 5/5 introduces a synthetic benchmark simulating what an OpenShift
>>> router (using NodePort services) scale test would do.  The benchmark
>>> allows us to compare the "standard" (no-template) configuration
>>> against the configuration that uses component templates:
>>>
>>> +----------+-------+-------------------+--------------------+----------+---------+-----------+---------------------------+
>>> |          |       |                   |     NB             |     SB  
>>> |         |  northd   |            ovn-controller |
>>> +----------+-------+-------------------+--------------------+----------+---------+-----------+---------------------------+
>>> | Template | Nodes | NodePort Services | Size(MB) | RSS(MB) | Size(MB)
>>> | RSS(MB) | loop(sec) | RSS (MB) | recompute(sec) |
>>> |          |       |    (5 backends)   |          |         |         
>>> |         |           |          |                |
>>> +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------+
>>> | No       |  60   |       1000        |     25   |    116  |   118   
>>> |   589   |    2.70   |    463   |      0.20      |
>>> | Yes      |  60   |       1000        |      6   |     25  |     8   
>>> |    46   |    0.07   |     44   |      0.20      |
>>> +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------+
>>> | No       | 120   |       2000        |     67   |    865  |   471   
>>> |  9000   |   15.60   |   1016   |      0.40      |
>>> | Yes      | 120   |       2000        |     23   |     96  |    28   
>>> |   225   |    0.22   |     83   |      0.40      |
>>> +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------+
>>> | Yes      | 120   |       10000       |    118   |    440  |   136   
>>> |   668   |    0.72   |    311   |      1.77      |
>>> +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+-----------------
>>> | Yes      | 250   |       10000       |    244   |    870  |   263   
>>> |  1502   |    1.26   |    318   |      1.87      |
>>> +-------------------------------------------------------------------------------------------------------------------------
>>>
>>> For the N=120 S=2000 case:
>>> - NB size reduced by ~65%
>>> - NB RSS  reduced by ~90%
>>> - SB size reduced by ~95%
>>> - SB RSS  reduced by ~98%
>>> - ovn-northd loop time reduced by ~98%
>>> - ovn-controller RSS reduced by ~92%
>>>
>>> Dumitru Ceara (5):
>>>        lflow: Factor out the lflow reference handling code into a new
>>> module.
>>>        Add NB and SB Template_Var tables.
>>>        controller: Add support for templated actions and matches.
>>>        lb: Support using templates.
>>>        tutorial: Add scripts to simulate node-port ovn-k8s services.
>>>
>>>
>>>   TODO.rst                     |  11 +
>>>   controller/lflow.c           | 242 ++++++++++++++-----
>>>   controller/lflow.h           |   8 +-
>>>   controller/ofctrl.c          |  13 +-
>>>   controller/ofctrl.h          |   3 +-
>>>   controller/ovn-controller.c  | 350 +++++++++++++++++++++++++--
>>>   include/ovn/expr.h           |   4 +-
>>>   include/ovn/lex.h            |  54 ++++-
>>>   lib/actions.c                |   9 +-
>>>   lib/expr.c                   |  18 +-
>>>   lib/lb.c                     | 452 ++++++++++++++++++++++++++++++-----
>>>   lib/lb.h                     |  40 +++-
>>>   lib/lex.c                    |  54 +++++
>>>   lib/objdep.c                 |   1 +
>>>   lib/objdep.h                 |   1 +
>>>   lib/ovn-util.c               |   3 -
>>>   northd/en-northd.c           |   4 +
>>>   northd/inc-proc-northd.c     |   8 +-
>>>   northd/northd.c              | 128 ++++++----
>>>   northd/northd.h              |   4 +
>>>   ovn-nb.ovsschema             |  17 +-
>>>   ovn-nb.xml                   |  96 +++++++-
>>>   ovn-sb.ovsschema             |  12 +-
>>>   ovn-sb.xml                   |  15 ++
>>>   tests/ovn-controller.at      |  50 ++++
>>>   tests/ovn-nbctl.at           |  23 +-
>>>   tests/ovn-northd.at          |  42 ++++
>>>   tests/ovn.at                 | 211 +++++++++++++++-
>>>   tests/system-ovn.at          | 183 ++++++++++++++
>>>   tests/test-ovn.c             |  16 +-
>>>   tutorial/automake.mk         |   4 +-
>>>   tutorial/ovn-lb-benchmark.py | 234 ++++++++++++++++++
>>>   tutorial/ovn-lb-benchmark.sh |  31 +++
>>>   utilities/ovn-nbctl.c        | 123 +++++-----
>>>   utilities/ovn-sbctl.c        |   3 +
>>>   utilities/ovn-trace.c        |  36 ++-
>>>   36 files changed, 2198 insertions(+), 305 deletions(-)
>>>   create mode 100755 tutorial/ovn-lb-benchmark.py
>>>   create mode 100755 tutorial/ovn-lb-benchmark.sh
>>>
>>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to