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. > > 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
