[ovs-dev] [PATCH ovn v3 00/27] ddlog 5x performance improvement

Ben Pfaff blp at ovn.org
Fri May 7 04:06:32 UTC 2021


This series of patches greatly improves the performance of
ovn-northd-ddlog with the benchmark added in the final patch.  The
first three patches improve both the benchmark for both versions of
ovn-northd.

Here are the timings that I measure in each case.  All of them
include the benefit of the first three patches.  Without those
patches, the C version takes over 500 seconds and the other take much
longer too; the relative timings aren't affected much, it's just all
slower:

C:                                 106.8s (0.135s ... 1.043s)
ddlog before optimization patches: 176.0s (0.128s ... 1.804s)
ddlog after optimization patches:   35.2s (0.129s ... 0.147s)

(I haven't re-measured for v3.)

v1->v2:
  - Don't remove --output-only-table option from ovsdb2ddlog2c
    in "ovn-northd-ddlog: Intern selected input relations.".
  - New patches "ovn-nbctl: Daemon mode is no longer experimental."
    and "ovn-nbctl: Recommend ovn-appctl instead of ovs-appctl."
    and make similar changes to new ovn-sbctl manpage.
  - Update ovn-sbctl and ovn-nbctl manpages to reference ovn-appctl
    manpage.
  - Various trivial changes suggested by checkpatch.
  - New patches "ovn-nbctl: Fix memory leak in client mode."
    and "ovn-northd-ddlog: Fix two memory leaks." fix memory leaks
    reported by Numan and found by Address Sanitizer.
  - Fix bug introduced into ovsdb2ddlog2c in "ovn-northd-ddlog: Intern
    selected input relations."

v2->v3:
  - Rebase.
  - Apply Mark Michelson's comments for "ovn-sbctl: Add daemon support."
    and to "tests: Miscellaneous debuggability improvements.".
  - New patch "ovn-nbctl: Don't replicate entire database unnecessarily."

Ben Pfaff (12):
  ovn-northd-ddlog: Fix two memory leaks.
  ovn-nbctl: Fix memory leak in client mode.
  ovn-nbctl: Improve manpage.
  ovn-nbctl: Recommend ovn-appctl instead of ovs-appctl.
  ovn-nbctl: Daemon mode is no longer experimental.
  ovn-nbctl: Refactor into infrastructure and northbound details.
  ovn-dbctl: Fix memory leak in client mode.
  ovn-sbctl: Add daemon support.
  ovn-nbctl: Don't replicate entire database unnecessarily.
  tests: Miscellaneous debuggability improvements.
  ovn-northd-ddlog: Preserve NB_Global more carefully.
  tutorial: Add benchmarking test script to run within sandbox.

Leonid Ryzhyk (15):
  ovn-northd-ddlog: Upgrade to ddlog 0.38.
  ovn-northd-ddlog: Remove `lr` field from `Router`.
  ovn-northd-ddlog: Intern the `Router` table.
  ovn-northd-ddlog: Workaround for slow group_by.
  ovn-northd-ddlog: Intern the Switch table.
  ovn-northd-ddlog: Remove `ls` field from `Switch`.
  ovn-northd-ddlog: Intern the SwitchPort table.
  ovn-northd-ddlog: Intern the RouterPort table.
  ovn-northd-ddlog: Remove unused function.
  ovn-northd-ddlog: Eliminate remaining Ref's.
  ovn-northd-ddlog: Eliminate redundant dereferences.
  ovn-northd-ddlog: Intern selected input relations.
  ovn-northd-ddlog: Intern nb::Logical_Router_Port.
  ovn-northd-ddlog: Intern nb::Logical_Switch_Port.
  ovn-northd-ddlog: Remove Router.static_routes.

 NEWS                          |    5 +-
 manpages.mk                   |   17 -
 northd/helpers.dl             |   40 +-
 northd/ipam.dl                |   61 +-
 northd/lrouter.dl             |  188 +--
 northd/lswitch.dl             |  243 ++--
 northd/multicast.dl           |   77 +-
 northd/ovn-nb.dlopts          |   10 +
 northd/ovn-northd-ddlog.c     |   23 +-
 northd/ovn-sb.dlopts          |    1 +
 northd/ovn_northd.dl          | 1045 ++++++++-------
 northd/ovsdb2ddlog2c          |    4 +-
 tests/ovn-sbctl.at            |   76 +-
 tests/ovn.at                  |   51 +-
 tutorial/automake.mk          |    3 +-
 tutorial/northd_ddlog_test.sh |   81 ++
 utilities/automake.mk         |   12 +-
 utilities/ovn-dbctl.c         | 1230 +++++++++++++++++
 utilities/ovn-dbctl.h         |   61 +
 utilities/ovn-nbctl.8.xml     |  667 +++++----
 utilities/ovn-nbctl.c         | 2385 ++++++++++++++-------------------
 utilities/ovn-sbctl.8.in      |  317 -----
 utilities/ovn-sbctl.8.xml     |  580 ++++++++
 utilities/ovn-sbctl.c         |  669 ++-------
 24 files changed, 4464 insertions(+), 3382 deletions(-)
 create mode 100755 tutorial/northd_ddlog_test.sh
 create mode 100644 utilities/ovn-dbctl.c
 create mode 100644 utilities/ovn-dbctl.h
 delete mode 100644 utilities/ovn-sbctl.8.in
 create mode 100644 utilities/ovn-sbctl.8.xml

-- 
2.31.1



More information about the dev mailing list