[ovs-git] [ovn-org/ovn] c1e389: northd: Use address sets for ARP responder flows f...

Dumitru Ceara noreply at github.com
Wed Oct 6 00:59:35 UTC 2021


  Branch: refs/heads/main
  Home:   https://github.com/ovn-org/ovn
  Commit: c1e3896c0a393c035f301db6c1a8431adda57eb0
      https://github.com/ovn-org/ovn/commit/c1e3896c0a393c035f301db6c1a8431adda57eb0
  Author: Dumitru Ceara <dceara at redhat.com>
  Date:   2021-10-05 (Tue, 05 Oct 2021)

  Changed paths:
    M northd/northd.c
    M tests/ovn-northd.at

  Log Message:
  -----------
  northd: Use address sets for ARP responder flows for VIPs.

Otherwise the S_ROUTER_IN_IP_INPUT aggregated flows that reply to ARP
requests targeting load balancer VIPs get completely regenerated every
time a new VIP/LB is added.  This affects SB memory usage as RAFT log
entries are huge.  Use an address set instead.  Updating an address set
is incremental, because it's performed with a "mutate" operation.

On a large scale ovn-kubernetes deployment with a high number of
load balancers (services) this change reduces memory usage of
ovsdb-servers running the OVN_Southbound cluster by 50%, from ~2GB
RSS to ~1GB RSS.

Signed-off-by: Dumitru Ceara <dceara at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: f6aba21c9de8952beccf7ee7e98cfa28618f1edf
      https://github.com/ovn-org/ovn/commit/f6aba21c9de8952beccf7ee7e98cfa28618f1edf
  Author: Dumitru Ceara <dceara at redhat.com>
  Date:   2021-10-05 (Tue, 05 Oct 2021)

  Changed paths:
    M NEWS
    M northd/northd.c
    M ovn-nb.ovsschema
    M ovn-nb.xml
    M tests/ovn-northd.at
    M utilities/ovn-nbctl.c

  Log Message:
  -----------
  nb: Add support for Load_Balancer_Groups.

For deployments when a large number of load balancers are associated
to multiple logical switches/routers, introduce a syntactic sugar
in the OVN_Northbound database (Load_Balancer_Groups) to simplify
configuration.

Instead of associating N Load_Balancer records to M Logical_Switches
(M x N references in the NB database) we can instead create a single
Load_Balancer_Group record, associate all N Load_Balancer records to
it, and associate it to all M Logical_Switches (in total M + N
references in the NB database).

This makes it easier for the CMS to configure Load Balancers (e.g., in
the ovn-kubernetes use case cluster load balancers are applied to all
node logical switches and node logical gateway routers) but also
drastically improves performance on the ovsdb-server NB side.  This
happens thanks to the fact that ovsdb-server now has to track M times
less references.

With a micro benchmark which creates 120 logical switches and
associates 1000 load balancers to them (with ovn-nbctl daemon) we
measure:

             CPU Time NB DB          CPU Time ovn-nbctl
  -----------------------------------------------------
  Plain LB:             30s                         35s
  LB Groups:             1s                          2s

Reported-at: https://bugzilla.redhat.com/2001528
Signed-off-by: Dumitru Ceara <dceara at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


Compare: https://github.com/ovn-org/ovn/compare/558fd0e7b4d9...f6aba21c9de8


More information about the git mailing list