On Fri, Aug 18, 2023 at 11:38 AM Han Zhou <hz...@ovn.org> wrote:
>
> On Wed, Aug 9, 2023 at 9:38 AM <num...@ovn.org> wrote:
> >
> > From: Numan Siddique <num...@ovn.org>
> >
> Thanks Numan for the enhancement.
>
> > Instead of maintaing the lport to lflow references using
> > 'struct lflow_ref_list', this patch makes use of the existing
> > objdep APIs.  Since objdep_mgr is not thread safe, an instance
> > of objdep_mgr is maintained for each 'ovn_port'.
> >
> > Once we add the thread safe support to objdep APIs we can move
> > the objdep_mgr to 'lflow' engine date.
> >
> > Using objdep APIs does come with a cost in memory.  We now
> > maintain an additional hmap of ovn_lflow's to look up using
> > uuid.  But this will be useful to handle datapath and load
> > balancer changes in the lflow engine node.
> >
>
> I understand that the 'struct lflow_ref_list' may not satisfy the needs of
> more complex I-P, but I wonder if objdep_mgr (without modification) is the
> solution. It seems to me more complex at least for this patch without
> adding obvious benefits. Since I am still reviewing, maybe I missed some
> points which would show the value from the rest of the patches, and please
> forgive me for my slow review.

Sure.   No worries.

Can you please continue reviewing from the latest v6 ?

http://patchwork.ozlabs.org/project/ovn/list/?series=369384

I think we can discuss more once you go through all the patches in the
series (or until patch 14).
I think that would give a better idea of how it is used and we can
discuss if it's worth using obj dep mgr.

Also I think the patches P1 - P8 make one set and can be considered
first.  I submitted all these patches
as one series mainly because
   -  all the patches can be applied easily
   -  the soft freeze was near.

The patches can be found here too -
https://github.com/numansiddique/ovn/tree/northd_ip_lb_ip_v6

Thanks
Numan

>
> While I am still reviewing the patches, I did a performance test with
> https://github.com/hzhou8/ovn-test-script for the 200 chassis x 50 lsp
> scale of simulated ovn-k8s topology.
>
> - Before this patch, a recompute takes 1293ms
> - After this patch, a recompute takes 1536ms, which is 20% more time.
> - I also did the same test with all the rest of the patches of this series,
> which takes 1690ms.
>
> So the major increase of the recompute time is from this patch. I didn't
> debug what's the exact cause of this increase, but I think it might be
> related to the objdep usage.
>
> > This patch does few more changes which are significant:
> >   -  Logical flows are now hashed without the logical
> >      datapaths.  If a logical flow is referenced by just one
> >      datapath, we don't rehash it.
> >
> >   -  The synthetic 'hash' column of sbrec_logical_flow now
> >      doesn't use the logical datapath too.  This means that
> >      when ovn-northd is updated/upgraded and has this commit,
> >      all the logical flows with 'logical_datapath' column
> >      set will get deleted and re-added causing some disruptions.
> >
> >   -  With the commit [1] which added I-P support for logical
> >      port changes, multiple logical flows with same match 'M'
> >      and actions 'A' are generated and stored without the
> >      dp groups, which was not the case prior to
> >      that patch.
> >      One example to generate these lflows is:
> >              ovn-nbctl lsp-set-addresses sw0p1 "MAC1 IP1"
> >              ovn-nbctl lsp-set-addresses sw1p1 "MAC1 IP1"
> >              ovn-nbctl lsp-set-addresses sw2p1 "MAC1 IP1"
> >
> >      Now with this patch we go back to the earlier way.  i.e
> >      one logical flow with logical_dp_groups set.
> >
> Thanks for taking the effort to achieve this. The approach is indeed very
> smart. I was aware of such scenarios, but it just didn''t seem to impact
> scalability because the number of such lflows should be small, so it wasn't
> considered a priority.
>
> >   -  With this patch any updates to a logical port which
> >      doesn't result in new logical flows will not result in
> >      deletion and addition of same logical flows.
> >      Eg.
> >      ovn-nbctl set logical_switch_port sw0p1 external_ids:foo=bar
> >      will be a no-op to the SB logical flow table.
> >
> Similar to the above case, this doesn't seem to be critical for
> scalability, but it is good to see the enhancement.
> I will post more feedback after finishing the full review.
>
> Thanks,
> Han
>
> > [1] - 8bbd67891f68("northd: Incremental processing of VIF additions in
> 'lflow' node.")
> >
> > Suggested-by: Dumitru Ceara <dce...@redhat.com>
> > Signed-off-by: Numan Siddique <num...@ovn.org>
> _______________________________________________
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to