On Wed, May 24, 2023 at 11:12:28AM +0200, Ihtisham ul Haq via dev wrote:
> Using cache improves performance of recomputation of lflows(by
> about 30%)
>
> Exising lflow cache for `matches` and `expressions` is adopted
> to include `actions` as well.
>
> Co-authored-by: Felix Huettner <[email protected]>
> Signed-off-by: Felix Huettner <[email protected]>
> Signed-off-by: Ihtisham ul Haq <[email protected]>
...
> diff --git a/controller/lflow.c b/controller/lflow.c
> index 0b071138d..5ca676ee8 100644
> --- a/controller/lflow.c
> +++ b/controller/lflow.c
> @@ -1078,14 +1078,23 @@ consider_logical_flow__(const struct
> sbrec_logical_flow *lflow,
> struct sset template_vars_ref = SSET_INITIALIZER(&template_vars_ref);
> struct expr *prereqs = NULL;
>
> - if (!lflow_parse_actions(lflow, l_ctx_in, &template_vars_ref,
> - &ovnacts, &prereqs)) {
> - ovnacts_free(ovnacts.data, ovnacts.size);
> - ofpbuf_uninit(&ovnacts);
> - store_lflow_template_refs(l_ctx_out->lflow_deps_mgr,
> - &template_vars_ref, lflow);
> - sset_destroy(&template_vars_ref);
> - return;
> + struct lflow_cache_value *lcv =
> + lflow_cache_get(l_ctx_out->lflow_cache, &lflow->header_.uuid);
> + enum lflow_cache_type lcv_type =
> + lcv ? lcv->type : LCACHE_T_NONE;
> +
> + if (lcv_type != LCACHE_T_NONE) {
> + ovnacts = *ofpbuf_clone(lcv->actions);
Hi,
This is being flagged as a memory leak by LeakSanitiser.
Link:
https://github.com/ovsrobot/ovn/actions/runs/5066318567/jobs/9095972982#step:6:4817
> + } else {
> + if (!lflow_parse_actions(lflow, l_ctx_in, &template_vars_ref,
> + &ovnacts, &prereqs)) {
> + ovnacts_free(ovnacts.data, ovnacts.size);
> + ofpbuf_uninit(&ovnacts);
> + store_lflow_template_refs(l_ctx_out->lflow_deps_mgr,
> + &template_vars_ref, lflow);
> + sset_destroy(&template_vars_ref);
> + return;
> + }
> }
>
> struct lookup_port_aux aux = {
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev