[ovs-dev] [PATCH v5 ovn 0/8] northd: rework ovn-northd lb flow installation

Lorenzo Bianconi lorenzo.bianconi at redhat.com
Mon Jul 5 10:05:38 UTC 2021


Rework lb flow logic in order to visit first each load_balancer and then
related datapath during lb flow installation.
This patch allows to reduce memory footprint and cpu utilization in
ovn-northd.

Testing environment:
ovn-nbctl lr-list |wc -l
308
ovn-nbctl ls-list |wc -l
615
ovn-nbctl lb-list |wc -l
14524

Time needed for build_lrouter_lb_flows() to run for all datapaths/lbs (logical routers)
    Total samples: 22
    Maximum: 6937 msec
    Minimum: 6869 msec
    95th percentile: 6933.000000 msec
    Short term average: 6916.599206 msec
    Long term average: 6914.809656 msec

Time needed for build_pre_lb()/build_stateful()[lb-only] to run for all datapaths/lbs (logical switches)
  Total samples: 20
  Maximum: 1735 msec
  Minimum: 1693 msec
  95th percentile: 1735.000000 msec
  Short term average: 1731.136610 msec
  Long term average: 1698.853040 msec

Time needed for build_lrouter_flows_for_lb() to run for all lbs/datapaths (logical routers)
   Total samples: 22
   Maximum: 2745 msec
   Minimum: 2674 msec
   95th percentile: 2742.000000 msec
   Short term average: 2724.775973 msec
   Long term average: 2681.334522 msec

Time needed for build_lswitch_flows_for_lb() to run for all lbs/datapaths (logical switches)
  Total samples: 20
  Maximum: 406 msec
  Minimum: 354 msec
  95th percentile: 406.000000 msec
  Short term average: 383.915676 msec
  Long term average: 363.318006 mse

This series does not introduce any new feature to ovn-northd.

Changes since v4:
- add init_router_enternal_ips routine to precompute all nat external_ips for a
  given logical router
- cosmetics

Changes since v3:
- squash patch 2/9 and 7/9
- precompute nat_entries sset
- cosmetics

Changes since v2:
- fix memory leak in build_lrouter_snat_flows_for_lb()

Changes since v1:
- rebase ontop of ovn-master
- add build_lswitch_flows_for_lb routine

Lorenzo Bianconi (8):
  northd: move snat_type out of vip loop
  lib: link logical {routers,switches} assigned for the same lb
  northd: move build_empty_lb_event_flow in build_lrouter_flows_for_lb
  northd: move lb_{skip,force}_snat code in
    build_lrouter_nat_lflows_for_lb
  northd: get rid of add_router_lb_flow
  northd: remove dead code in build_lrouter_nat_defrag_and_lb
  northd: move build_empty_lb_event_flow in build_lswitch_flows_for_lb
  northd: move build_lb_rules in build_lswitch_flows_for_lb

 lib/lb.c            |  23 +-
 lib/lb.h            |  16 +-
 northd/ovn-northd.c | 703 ++++++++++++++++++++++++++------------------
 3 files changed, 440 insertions(+), 302 deletions(-)

-- 
2.31.1



More information about the dev mailing list