[ovs-dev] [PATCH] ofproto: Optimise OpenFlow flow expiry

Ben Pfaff blp at nicira.com
Wed Jan 16 21:59:21 UTC 2013

On Tue, Jan 15, 2013 at 01:20:57PM +0900, Simon Horman wrote:
> Optimise OpenFlow flow expiry by placing expirable flows on a list.
> This optimises scanning of flows for expiry in two ways:
> * Empirically list traversal appears faster than the code it replaces.
>   With 1,000,000 flows present an otherwise idle system I observed CPU
>   utilisation of around 20% with the existing code but around 10% with
>   this new code.
> * Flows that will never expire are not traversed.
>   This addresses a case seen in the field.

This version looks better.  I still have a few comments, but before
that, may I ask a little bit about the situation in which the
performance improvement was observed?  In this situation, about how
many of the 1,000,000 flows were actually expirable, that is, had
either a hard timeout or an idle timeout?  That is, is the performance
improvement due more to the first or the second bullet you list above?
If none of the flows were expirable, then I guess it was the second;
if all of them were, then I guess it was the first; and otherwise it
is something in between.

Basically I'm wondering if we should do something to make flow table
traversal faster, independent of expiration.

More information about the dev mailing list