On Mon, Jan 12, 2026 at 12:05 PM Mark Michelson via dev
<[email protected]> wrote:
>
> I ran some small tests. I'm attaching the test script (perf_test), as
> well as the test results from main (main_stats.txt) and from the lflow
> refactor (lflow_refactor_stats.txt).
>
> In summary, the test does the following:
> * Create 1000 logical switches.
> * Create 1000 logical routers, and link one logical switch to one
> logical router.
> * Perform an ovn-nbctl --wait=sb sync.
>
> For each of the operations listed above, we:
> * Time the operation.
> * Check the stopwatch stats for the "build_lflows" and "ovnnb_db_run"
> stopwatches. These are the stopwatches that run during a recompute of
> en_lflow and en_northd. This gives us an idea of how many recomputes
> we saw during the operation, and shows us stats for code areas that
> are affected by this patch series.
> * Clear stopwatch and incremental engine stats.
> * Run a recompute.
> * Check the stopwatch stats for "build_lflows" and "ovnnb_db_run"
> stopwatches again. This tells us how long a recompute takes once the
> network is fully built.
>
> The result is that main and the lflow refactor perform nearly
> identically. This is not too surprising since there aren't any
> algorithmic changes introduced in this refactor. The changes mostly
> center around the data types being used by the lflow library in OVN.
>
> If you have concerns about specific operations or code sections that
> are not reflected in this particular test, please let me know and I'll
> check those as well.

Hi Mark,

For the whole series:
Acked-by: Numan Siddique <[email protected]>

You have to rebase and resolve conflicts before merging.

Also if it makes sense, you can include the results of your scale
testing in one of the commit messages.

Thanks
Numan


>
> On Mon, Jan 12, 2026 at 9:18 AM Mark Michelson <[email protected]> wrote:
> >
> > Hi Ilya, I can run some (unscientific) benchmarks using the OVN
> > sandbox and report back what I see.
> >
> > On Mon, Jan 12, 2026 at 4:50 AM Ilya Maximets <[email protected]> wrote:
> > >
> > > On 1/9/26 6:54 PM, Mark Michelson via dev wrote:
> > > > This series refactors the logical flow library with two goals in mind:
> > > >
> > > > 1) Eliminate the use of any structures that are created by the en-northd
> > > > incremental engine node. Composable services will define new datapath
> > > > types that will bypass en-northd processing. This allows for them to
> > > > add, remove and sync logical flows without the need for structures like
> > > > ovn_datapath or ovn_datapaths.
> > > >
> > > > 2) Eliminate the dichotomy that every logical datapath must either be a
> > > > switch or a router. New datapath types may be added, and when they are
> > > > added, the lflow library needs to accommodate those new types without
> > > > having to be altered.
> > > >
> > > > Mark Michelson (9):
> > > >   Add sparse array.
> > > >   northd: Convert ovn_datapath to use sparse_array.
> > > >   Use a sparse array for synced datapaths.
> > > >   northd: Base ovn_datapath index on synced_datapath index.
> > > >   lflow-mgr: Use a dynamic bitmap when updating SB DP groups.
> > > >   datapath-sync: Make ovn_synced_datapath_from_sb() public.
> > > >   lflow-mgr: Use an array for lflow dp groups.
> > > >   lflow-mgr: Don't use ovn_datapath when adding logical flows.
> > > >   lflow-mgr: Remove ovn_datapaths from functions.
> > > >
> > > >  lib/automake.mk                  |   2 +
> > > >  lib/ovn-util.h                   |  15 +++
> > > >  lib/sparse-array.c               | 102 +++++++++++++++
> > > >  lib/sparse-array.h               |  54 ++++++++
> > > >  northd/datapath-sync.c           |  27 ++++
> > > >  northd/datapath-sync.h           |   8 ++
> > > >  northd/en-datapath-sync.c        |  62 ++++-----
> > > >  northd/en-lflow.c                |  22 ++--
> > > >  northd/en-lr-nat.c               |   2 +-
> > > >  northd/en-lr-stateful.c          |   2 +-
> > > >  northd/en-ls-arp.c               |   2 +-
> > > >  northd/en-ls-stateful.c          |   2 +-
> > > >  northd/en-sync-sb.c              |  57 ++++----
> > > >  northd/inc-proc-northd.c         |   7 +
> > > >  northd/lb.c                      |   4 +-
> > > >  northd/lflow-mgr.c               | 214 ++++++++++++++-----------------
> > > >  northd/lflow-mgr.h               |  52 ++++----
> > > >  northd/northd.c                  | 115 ++++++-----------
> > > >  northd/northd.h                  |  15 +--
> > > >  tests/automake.mk                |   1 +
> > > >  tests/ovn-inc-proc-graph-dump.at |   2 +
> > > >  tests/ovn.at                     |   5 +
> > > >  tests/test-sparse-array.c        | 206 +++++++++++++++++++++++++++++
> > > >  23 files changed, 662 insertions(+), 316 deletions(-)
> > > >  create mode 100644 lib/sparse-array.c
> > > >  create mode 100644 lib/sparse-array.h
> > > >  create mode 100644 tests/test-sparse-array.c
> > > >
> > >
> > > Hi, Mark, Ales.  This code is touching a lot of performance-critical parts
> > > in northd.  Do we have some performance numbers for it?  ovn-heater is
> > > currently broken, unfortunately, but at least some manual test results 
> > > with
> > > a large database to see recompute times would be good to have.
> > >
> > > Best regards, Ilya Maximets.
> > >
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to