[ovs-git] [openvswitch/ovs] c4f326: ovn-controller: Optimize processing for non-local ...

GitHub noreply at github.com
Wed Mar 30 23:22:56 UTC 2016

  Branch: refs/heads/master
  Home:   https://github.com/openvswitch/ovs
  Commit: c4f3269632ba321bef50cf5f44165a54895f7cc0
  Author: Han Zhou <zhouhan at gmail.com>
  Date:   2016-03-30 (Wed, 30 Mar 2016)

  Changed paths:
    M ovn/controller/lflow.c
    M ovn/controller/lflow.h
    M ovn/controller/ovn-controller.c
    M ovn/controller/ovn-controller.h
    M ovn/controller/patch.c
    M ovn/controller/patch.h
    M ovn/controller/physical.c
    M ovn/controller/physical.h

  Log Message:
  ovn-controller: Optimize processing for non-local datapath without patch ports.

For non-local datapaths, if there are no patch ports attached, it
means the lflows and port bindings would never be needed on the
Chassis. Since lflow_run() and physical_run() are the bottlenecks,
skipping the processing for such lflows and port bindings can save
significant amount of CPU, at the same time largely reduce the
number of rules in local openflow tables. This is specifically
useful when most of the lswitches are created for bridged networks,
where logical router is not used.

Test precondition:
2k hypervisors, 20k lports, 200 lswitches (each with a localnet

Test case:
step1: add 50 hypervisors (simulated on 1 BM with 40 cores), and
       wait for flow updates complete on all new hypervisors.
step2: create a lswitch and a localnet port, create and bind 100
       lports evenly on these hypervisors. Repeat this 5 times.

Before the change:
Step1 took around 20 minutes.
Step2 took 936 seconds.

After the change:
Step1 took less than 1 minute: 20x faster.
Step2 took 464 seconds: 2x faster.

Signed-off-by: Han Zhou <zhouhan at gmail.com>
Signed-off-by: Ben Pfaff <blp at ovn.org>

More information about the git mailing list