[ovs-dev] [PATCH v3 7/7] lib/classifier: Lockless lookups.
YAMAMOTO Takashi
yamamoto at valinux.co.jp
Tue Jul 8 01:42:50 UTC 2014
> Now that all the relevant classifier structures use RCU and internal
> mutual exclusion for modifications, we can remove the fat-rwlock and
> thus make the classifier lookups lockless.
>
> As the readers are operating concurrently with the writers, a
> concurrent reader may or may not see a new rule being added by a
> writer, depending on how the concurrent events overlap with each
> other. Overall, this is no different from the former locked behavior,
> but there the visibility of the new rule only depended on the timing
> of the locking functions.
>
> A new rule is first added to the segment indices, so the readers may
> find the rule in the indices before the rule is visible in the
> subtables 'rules' map. This may result in us losing the opportunity
> to quit lookups earlier, resulting in sub-optimal wildcarding. This
> will be fixed by forthcoming revalidation always scheduled after flow
> table changes.
>
> Similar behavior may happen due to us removing the overlapping rule
> (if any) from the indices only after the corresponding new rule has
> been added.
>
> The subtable's max priority is updated only after a rule is inserted
> to the maps, so the concurrent readers may not see the rule, as the
> updated priority ordered subtable list will only be visible after the
> subtable's max priority is updated.
>
> Similarly, the classifier's partitions are updated by the caller after
> the rule is inserted to the maps, so the readers may keep skipping the
> subtable until they see the updated partitions.
>
> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
comments in ofproto-provider.h need an update.
otherwise, looks good to me.
how about unifying classifier and cls_classifier?
Acked-by: YAMAMOTO Takashi <yamamoto at valinux.co.jp>
More information about the dev
mailing list