Hi,
Dumitru mentioned to me that the impact of change tracking may affect
the performance relative to the current code. I did some quick tests
with a large NBDB and checked northd timings. The results are below. It
doesn't seem to have a significant impact but the data is a bit noisy.
Without this patch:
ovn-appctl -t ovn-northd stopwatch/reset ovnnb_db_run && ovn-nbctl
--print-wait-time --wait=sb lsp-add lswitch-ovn-scale-77 test1 &&
ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
Time spent on processing nb_cfg 2:
ovn-northd delay before processing: 7000ms
ovn-northd completion: 14935ms
Statistics for 'ovnnb_db_run'
Total samples: 5
Maximum: 7915 msec
Minimum: 0 msec
95th percentile: 0.000000 msec
Short term average: 6732.375000 msec
Long term average: 7831.435378 msec
ovn-appctl -t ovn-northd stopwatch/reset ovnnb_db_run && ovn-nbctl
--print-wait-time --wait=sb lsp-add lswitch-ovn-scale-77 test2 &&
ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
Time spent on processing nb_cfg 3:
ovn-northd delay before processing: 6645ms
ovn-northd completion: 14365ms
Statistics for 'ovnnb_db_run'
Total samples: 5
Maximum: 7600 msec
Minimum: 0 msec
95th percentile: 0.000000 msec
Short term average: 6618.250000 msec
Long term average: 7460.322269 msec
ovn-appctl -t ovn-northd stopwatch/reset ovnnb_db_run && ovn-nbctl
--print-wait-time --wait=sb lsp-add lswitch-ovn-scale-77 test3 &&
ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
Time spent on processing nb_cfg 4:
ovn-northd delay before processing: 6670ms
ovn-northd completion: 14362ms
Statistics for 'ovnnb_db_run'
Total samples: 5
Maximum: 7568 msec
Minimum: 0 msec
95th percentile: 0.000000 msec
Short term average: 6615.750000 msec
Long term average: 7476.213026 msec
With this patch:
ovn-appctl -t ovn-northd stopwatch/reset ovnnb_db_run && ovn-nbctl
--print-wait-time --wait=sb lsp-add lswitch-ovn-scale-77 test1 &&
ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
Time spent on processing nb_cfg 2:
ovn-northd delay before processing: 112ms
ovn-northd completion: 7986ms
Statistics for 'ovnnb_db_run'
Total samples: 3
Maximum: 7732 msec
Minimum: 7535 msec
95th percentile: 7535.000000 msec
Short term average: 7620.500000 msec
Long term average: 7729.515200 msec
ovn-appctl -t ovn-northd stopwatch/reset ovnnb_db_run && ovn-nbctl
--print-wait-time --wait=sb lsp-add lswitch-ovn-scale-77 test2 &&
ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
Time spent on processing nb_cfg 3:
ovn-northd delay before processing: 118ms
ovn-northd completion: 7826ms
Statistics for 'ovnnb_db_run'
Total samples: 3
Maximum: 7564 msec
Minimum: 7562 msec
95th percentile: 7562.000000 msec
Short term average: 7563.250000 msec
Long term average: 7563.000100 msec
ovn-appctl -t ovn-northd stopwatch/reset ovnnb_db_run && ovn-nbctl
--print-wait-time --wait=sb lsp-add lswitch-ovn-scale-77 test3 &&
ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
Time spent on processing nb_cfg 4:
ovn-northd delay before processing: 109ms
ovn-northd completion: 7880ms
Statistics for 'ovnnb_db_run'
Total samples: 3
Maximum: 7767 msec
Minimum: 7555 msec
95th percentile: 7555.000000 msec
Short term average: 7623.000000 msec
Long term average: 7615.904800 msec
On 03/09/2021 13:21, Mark Gray wrote:
> Part 1:
> The first two comits deal with reorganising the northd code base a little.
> Please note that this commit mainly involves moving code around with minimal
> code changes. However, due to tight coupling between ovn-northd.c and
> northd.c,
> some minor changes were needed. For reference, and to help reviews, please
> examine the following at a minimum:
>
> * Configuration of the probe interval in northd.c
> (ovsdb_idl_set_probe_interval())
> * Passing of "use_parallel_build" and "lflow_locks" from ovn-northd.c and
> northd.c.
> * Update of "struct northd_context": additon of fields and move to h file.
>
> The commits were (hopefully) structured in a way to make the review easier. As
> this change touches all of ovn-northd, any change to "master" will make a
> rebase
> necessary and probably difficult. Therefore, if the general ideas is OK, then
> it would be great if this series could be expedited to prevent many rebases!
>
> Part 2:
> The remaining commits add the inc-proc-eng framework to northd. This does
> *not*
> add any incremental processing of northd processing at this stage but
> provides the
> framework. Even in this base configuration, we see an advantage as northd no
> longer
> processes the databases if it has been woken up only to handle, for example, a
> unixctl command. This can be seen below:
>
> $ ovn-appctl -t ovn-northd stopwatch/reset
> $ for i in {1..10}; do ovn-appctl -t ovn-northd stopwatch/show >/dev/null;
> done
> $ ovn-appctl -t ovn-northd stopwatch/show ovnnb_db_run
> Statistics for 'ovnnb_db_run'
> Total samples: 0
> Maximum: 0 msec
> Minimum: 0 msec
> 95th percentile: 0.000000 msec
> Short term average: 0.000000 msec
> Long term average: 0.000000 msec
>
> Hopefully this starting point will allow others to discuss or contribute
> changes to
> incrementally process some aspects of northd. We can also decide if it is
> worth
> progressing with "Part 2" if we think there are potential benefits until we
> start
> seeing the benefits of DDlog.
>
> Thanks
>
> ---
> v2: Rebase
> v3: Rebase. Fixed compile-time error
> v4: Add additional commits which add framework for incremental processing in
> northd
>
> Mark Gray (7):
> ovn-northd: Rename ovn-northd.c to northd.c
> northd: Split northd.c
> inc-proc-eng: Allow definition of engine_node with global scope
> northd: Introduce incremental processing for northd
> northd: Add n_nat_entries field to 'struct ovn_datapath'
> northd: Add runtime node
> northd: Add functionality to runtime node
>
> Documentation/tutorials/ovn-openstack.rst | 154 +-
> controller/ovn-controller.c | 2 +-
> lib/inc-proc-eng.h | 24 +-
> northd/automake.mk | 8 +
> northd/en-northd.c | 52 +
> northd/en-northd.h | 17 +
> northd/en-runtime.c | 66 +
> northd/en-runtime.h | 25 +
> northd/inc-proc-northd.c | 258 +
> northd/inc-proc-northd.h | 15 +
> northd/lrouter.dl | 2 +-
> northd/northd.c | 14568 +++++++++++++++++++
> northd/northd.h | 45 +
> northd/ovn-northd.c | 15084 +-------------------
> northd/ovn.rs | 2 +-
> northd/ovn_northd.dl | 2 +-
> tests/ovn-northd.at | 2 +-
> 17 files changed, 15454 insertions(+), 14872 deletions(-)
> create mode 100644 northd/en-northd.c
> create mode 100644 northd/en-northd.h
> create mode 100644 northd/en-runtime.c
> create mode 100644 northd/en-runtime.h
> create mode 100644 northd/inc-proc-northd.c
> create mode 100644 northd/inc-proc-northd.h
> create mode 100644 northd/northd.c
> create mode 100644 northd/northd.h
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev