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
