On 30 August 2016 at 18:47, Daniele Di Proietto <diproiet...@vmware.com> wrote:
> Sometimes the ofproto layer creates a flow which is not liked by the
> revalidation for various reasons. This behavior, while not critical
> might impact the performance. This commit adds a facility to detect
> this issue early and log a warning.
> The detection is done by revalidating a flow as soon as it is installed.
> Since this extra revalidation might be expensive it is disabled by
> default. It can be enabled using the undocumented unixctl:
> `ovs-appctl upcall/instant-revalidation sample_rate`
> where 'sample_rate' is a number between 0 and 100, meaning the
> percentage of newly installed flows that are instantly revalidated.
> We explicitly enable the feature in the unit and system tests (except
> for three MPLS unit tests, which expose a problem that hasn't been fixed
> Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com>
This is great idea, and it's clearly showing itself to be useful for
finding real bugs.
I think that for the kernel datapath codepath, there's still cases
where the ukey exists in the upcall but wasn't installed -
(upcall->ukey && !upcall->ukey_persists). Is it intended to also run
in this case?
revalidate_ukey() is already kinda hard to track, and I feel like
adding an extra "instant_revalidation" bool complicates it further. I
took a stab at trying to refactor this code, which I hoped would allow
you to simplify your logic by just using the logic for translating a
ukey into a translated flow. I think the resulting revalidate_ukey__()
is pretty close to what you want here, but I would appreciate any
feedback on that:
dev mailing list