[ovs-dev] [PATCH 1/2] ovn-controller: Avoid recomputing when there are in-flight msgs.

Russell Bryant russell at ovn.org
Thu Sep 14 19:06:46 UTC 2017


On Mon, May 1, 2017 at 5:42 PM, Ben Pfaff <blp at ovn.org> wrote:
> On Fri, Apr 21, 2017 at 06:55:27PM -0700, Han Zhou wrote:
>> When there are in-flight msgs being sent to OVS, ofctrl_put will
>> skip, which makes all the flows computed in that main loop
>> iteration useless. To avoid the wasted CPU cycles, a check is added
>> before lflow/physical flow run in each iteration.
>>
>> This has huge performance improvement in below testing:
>> - 1 lswitch with 10 lports bound locally
>> - Each lport has an ingress ACL, referencing the same address-set
>> - The address-set has 10,000 IPv4 addresses
>>
>> For each IP address in the address-set, there will be 3
>> OpenFlow rules generated for each ACL. So the total number
>> of rules is 300k+.
>>
>> Without the patch, it takes 50+ minutes to install all the
>> rules to ovs-vswitchd.
>>
>> With the patch, it takes 16 seconds to install all the rules
>> to ovs-vswitchd.
>>
>> The reason is that the large number of rules are sent to
>> ovs-vswitchd gradually in many iterations of ovn-controller
>> main loop. Without the patch, cpu cycles are wasted in
>> lflow_run to re-processing the large address set in every
>> main loop iteration. With the patch, this re-processing is
>> avoided in iterations when there are pending rules sending.
>>
>> Signed-off-by: Han Zhou <zhouhan at gmail.com>
>
> Wow, that's a huge performance improvement, really amazing.  Thank you
> for implementing this!  I applied it to master.

This patch made it into OVS 2.8.  It makes such a big difference to
performance that I wonder if it's worth backporting to OVS 2.7.  Does
anyone have a strong opinion about that?  If there's no objections,
I'd like to backport it.

-- 
Russell Bryant


More information about the dev mailing list