[ovs-dev] [PATCH v2 ovn 00/10] ovn-controller: Make lflow cache size configurable.

Dumitru Ceara dceara at redhat.com
Thu Feb 4 13:24:48 UTC 2021


Scale tests have identified the lflow cache to be one of the main memory
consumers in ovn-controller.  This series refactors the lflow cache code
and adds configuration knobs to limit the size (in lines and/or memory)
of the cache.

Patches 1 and 6 fix issues with the already existing lflow cache code.
Even though patch 6 is a bug fix, it's easier to add it later in the
series because it uses the new lflow cache statistics (from patch 4)
to add a unit test that exercises the buggy scenario.

Changes in v2:
- Added two bug fixes for already existing problems (patches 1 and 6).
- Added unit tests as requested by Mark.
- Added support for evicting "less important" entries when the cache
  limit is reached.
- Improved cache entries memory accounting.

Dumitru Ceara (10):
      lflow: Fix cache update when I-P engine aborts.
      lflow: Refactor convert_match_to_expr() to explicitly consume prereqs.
      lflow-cache: Move the lflow cache to its own module.
      lflow-cache: Add lflow-cache/show-stats command.
      lflow-cache: Add unit tests.
      lflow: Do not cache non-conjunctive flows that use address sets/portgroups.
      lflow-cache: Add coverage counters.
      lflow-cache: Reclaim heap memory after cache flush.
      lflow-cache: Make maximum number of cache entries configurable.
      lflow-cache: Make max cache memory usage configurable.


 NEWS                            |    5 
 configure.ac                    |    1 
 controller/automake.mk          |    2 
 controller/chassis.c            |   44 ++++
 controller/lflow-cache.c        |  363 +++++++++++++++++++++++++++++++++++
 controller/lflow-cache.h        |   89 +++++++++
 controller/lflow.c              |  376 +++++++++++++-----------------------
 controller/lflow.h              |   10 -
 controller/ovn-controller.8.xml |   23 ++
 controller/ovn-controller.c     |  114 ++++++++---
 controller/test-lflow-cache.c   |  239 +++++++++++++++++++++++
 controller/test-ofctrl-seqno.c  |   18 --
 include/ovn/expr.h              |    3 
 lib/expr.c                      |   43 ++++
 tests/automake.mk               |    8 +
 tests/ovn-lflow-cache.at        |  405 +++++++++++++++++++++++++++++++++++++++
 tests/ovn.at                    |   82 ++++++++
 tests/test-utils.c              |   49 +++++
 tests/test-utils.h              |   26 +++
 tests/testsuite.at              |    1 
 20 files changed, 1593 insertions(+), 308 deletions(-)
 create mode 100644 controller/lflow-cache.c
 create mode 100644 controller/lflow-cache.h
 create mode 100644 controller/test-lflow-cache.c
 create mode 100644 tests/ovn-lflow-cache.at
 create mode 100644 tests/test-utils.c
 create mode 100644 tests/test-utils.h



More information about the dev mailing list