On Tue, Nov 10, 2020 at 8:44 PM Ben Pfaff <b...@ovn.org> wrote:

> On Tue, Nov 10, 2020 at 03:43:17PM -0500, Flavio Fernandes wrote:
> > [cc Dimitru, Numan, MarkM]
> >
> >
> > > On Nov 10, 2020, at 2:15 PM, Ben Pfaff <b...@ovn.org> wrote:
> > >
> > > On Mon, Nov 09, 2020 at 09:53:16AM -0500, Flavio Fernandes wrote:
> > >>> On Nov 7, 2020, at 4:39 PM, Ben Pfaff <b...@ovn.org> wrote:
> > >>> On Tue, Nov 03, 2020 at 10:18:34PM +0000, Flavio Fernandes wrote:
> > >>>> When multiple ACL rows use the same Meter for log rate-limiting, the
> > >>>> 'noisiest' ACL matches may completely consume the Meter and shadow
> other
> > >>>> ACL logs. This patch introduces an option in NB_Global that allows
> for a
> > >>>> Meter to rate-limit each ACL log separately.
> > >>>
> > >>> I'm not sure I like the overall design here.  This option isn't
> going to
> > >>> scale very well to many of these meters, since they'd all need to be
> > >>> shoved into a single comma-separated list.  Another way might be to
> add
> > >>> a column to the ACL table to mark a meter as shared or private.  Or
> > >>> there could be a name convention, e.g. prefix with "shared_" to make
> it
> > >>> shared.
> > > OK, let's step back here and consider G.  Why do we need a new
> > > southbound Meter row for each instance?  That's a bit of a waste, isn't
> > > it?  Why can't we just add an indicator to the southbound Meter that
> > > says "each reference to me is unique"?  Or a new argument to the
> > > southbound log() action that distinguishes references to a given meter,
> > > so that identical values get the same one and different values get
> > > distinct ones?
> >
> > Hmm.... That sounds really good, actually. We would still need 'A' as a
> way
> > to propagate that desire from the CMS' perspective, agree?
> >
> > I must confess that the wasteful approach of rows in the SB comes from my
> > limited knowledge on how to efficiently use the log action to do what you
> > described. Also, because I was hoping to solve the whole problem within
> > northd.
> >
> > If I understand you correctly, option 'G' you mention here would require
> > changes in the SB schema as well as in ovn-controller? I will definitely
> > need some pointers to make that happen. Wanna be my partner in
> > crime? :) No pressure.
>
> It would require ovn-controller changes.  However, maybe it's not worth
> doing them yet?  It would only yield a small efficiency improvement, and
> it's always possible to get that later.
>
>
Sounds reasonable. Thank you for taking the time to think/explain 'G'.
I circled back with Dumitru on this subject. He convinced me that 'B' is
actually a better approach, because things other than ACL logs may benefit
from 'fair' Meters later on. Case in point:
https://mail.openvswitch.org/pipermail/ovs-discuss/2020-November/050778.html

So I will rebase the code to be off of
github.com/blp/ovs-reviews/ddlog_${latest}
and make changes with 'B' in mind. We tackle 'G' as a separate follow up.

Thanks,

-- flaviof


> > > Finally, we need to create new southbound Meter records for the
> "shared"
> > > meters.  I'm actually a bit confused about this.  I would have thought
> > > that "shared" meters wouldn't need the Meter records whose names are
> > > un-suffixed by __<uuid>, but the C implementation appears to always
> > > create them.  So I left in place the existing DDlog code that just
> > > copies from nb::Meter to sb::Out_Meter:
> >
> > I did not want to alienate any other users of the Meter name. So yes,
> > I intentionally kept the creation of the unmodified meter in place to
> > cover potential cases where something unrelated to acl log decided
> > to use the same meter name. Maybe a bit too paranoid?!? ;)
>
> I don't know.  This kind of thing can always be changed later.
>
> > > The above might need some explanation for those relatively new to
> > > Datalog or DDlog.  First, the style.  This uses Datalog-style syntax
> > > (output :- input) instead of the FLWOR-style syntax (for (input) {
> > > output }).  One reason for that is because the FLWOR-style syntax
> > > currently doesn't support FlatMap, which we need in that case.
> >
> > It will be a while longer until I manage to acclimate to the syntax in
> > ovn_northd.dl. But I can see how powerful it can be. Reminds me of
> > the few months it took me to learn Erlang, which remains as one of
> > my favorite languages.
>
> It's kind of cool.  Some of the things that are relatively easy in C are
> somewhat difficult and obscure in DDlog (ID allocation is the best
> example that occurs to me off-hand), but some things that are tricky in
> C are really easy in DDlog.  The syntax is the biggest barrier,
> honestly.
>
> > Lastly, it goes w/out saying but just to be clear: Given how fast you
> move
> > and how far along ddlog patches are, my intentions are for not getting
> any
> > of the 'fair' meters code merged before ddlog's.
>
> Thanks a lot!
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to