On Mon, Jan 8, 2024 at 5:52 PM Frode Nordahl
<[email protected]> wrote:
>
> Posting this as RFC as I'm not fully content with my test results.
>
> With this series there are still situations where we overrun the
> time threashold and subsequently get into the situation we are trying
> to fix with this series.
>
> During testing I found a destroy call [0] to take around 500ms, but
> as far as I read the code that ends up being a single call to free()
> so that does not quite make sense.  Working on replicating in a
> different test bed and continuing to pin-point the source of the
> last time threshold overruns.  Will post a follow-up soon.
>
> 0: 
> https://github.com/openvswitch/ovs/blob/4102674b3ecadb0e20e512cc661cddbbc4b3d1f6/ovsdb/monitor.c#L1290

Ah, I conflated the layout of the old and the new json object. The one
being removed is a JSON_OBJECT and not a JSON_SERIALIZED_OBJECT which
indeed involves a loop for destruction [1] and not a single call to
free().

I'll give it similar treatment as done in patch 4 of this series and
see where that gets me.

1: 
https://github.com/openvswitch/ovs/blob/4102674b3ecadb0e20e512cc661cddbbc4b3d1f6/lib/json.c#L397-L410

-- 
Frode Nordahl

> Introduce cooperative multitasking module which allow us to
> interleave important processing with long running tasks while
> avoiding the additional resource consumption of threads and
> complexity of asynchronous state machines.
>
> We will use this module to ensure long running processing in the
> OVSDB server does not interfere with stable maintenance of the
> RAFT cluster in subsequent patches.
>
> Relevant discussion:
> https://mail.openvswitch.org/pipermail/ovs-discuss/2022-December/052140.html
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-December/410262.html
>
>
> Frode Nordahl (5):
>   timeval: Make timewarp available for internal callers.
>   lib: Introduce cooperative multitasking module.
>   ovsdb/raft: Register for cooperative multitasking.
>   json: Add yielding serialized object create function.
>   ovsdb-server: Make use of cooperative multitasking.
>
>  NEWS                                   |   8 +
>  include/openvswitch/json.h             |   4 +-
>  lib/automake.mk                        |   3 +
>  lib/cooperative-multitasking-private.h |  30 +++
>  lib/cooperative-multitasking.c         | 192 ++++++++++++++++++
>  lib/cooperative-multitasking.h         |  42 ++++
>  lib/json.c                             |  43 ++--
>  lib/timeval.c                          |  56 ++++--
>  lib/timeval.h                          |   4 +
>  ovsdb/file.c                           |   2 +
>  ovsdb/jsonrpc-server.c                 |   3 +
>  ovsdb/monitor.c                        |  25 ++-
>  ovsdb/ovsdb-server.c                   |   5 +
>  ovsdb/raft.c                           |  12 +-
>  tests/automake.mk                      |   1 +
>  tests/library.at                       |  10 +
>  tests/ovsdb-server.at                  |   1 +
>  tests/test-cooperative-multitasking.c  | 259 +++++++++++++++++++++++++
>  18 files changed, 673 insertions(+), 27 deletions(-)
>  create mode 100644 lib/cooperative-multitasking-private.h
>  create mode 100644 lib/cooperative-multitasking.c
>  create mode 100644 lib/cooperative-multitasking.h
>  create mode 100644 tests/test-cooperative-multitasking.c
>
> --
> 2.34.1
>
> _______________________________________________
> 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