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

Ben Pfaff blp at ovn.org
Sat Mar 27 00:31:26 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 previously posted the first three patches.  This series includes
those patches with the minor fixes that I posted later folded in.

Ben Pfaff (6):
  ovn-nbctl: Improve manpage.
  ovn-nbctl: Refactor into infrastructure and northbound details.
  ovn-sbctl: Add daemon support.
  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                          |    4 +-
 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     |   21 +-
 northd/ovn-sb.dlopts          |    1 +
 northd/ovn_northd.dl          | 1065 +++++++++++++-------------
 northd/ovsdb2ddlog2c          |    6 +-
 tests/ovn-sbctl.at            |   76 +-
 tests/ovn.at                  |   67 +-
 tutorial/automake.mk          |    3 +-
 tutorial/northd_ddlog_test.sh |   81 ++
 utilities/automake.mk         |   12 +-
 utilities/ovn-dbctl.c         | 1226 +++++++++++++++++++++++++++++
 utilities/ovn-dbctl.h         |   61 ++
 utilities/ovn-nbctl.8.xml     |  670 +++++++++-------
 utilities/ovn-nbctl.c         | 1362 ++++-----------------------------
 utilities/ovn-sbctl.8.in      |  317 --------
 utilities/ovn-sbctl.8.xml     |  583 ++++++++++++++
 utilities/ovn-sbctl.c         |  670 +++-------------
 24 files changed, 3598 insertions(+), 3263 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.29.2



More information about the dev mailing list