summaryrefslogtreecommitdiff
path: root/ovn/controller/ovn-controller.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@ovn.org>2016-01-20 13:29:25 -0500
committerRussell Bryant <russell@ovn.org>2016-02-03 10:26:46 -0500
commitb1e04512f7150aa9d98a121b32f820c316522372 (patch)
treeff66a9a3f8c52f1b786e13a8c7c8789e03de895e /ovn/controller/ovn-controller.c
parent993225bd48296e79b95c5ea0237ee307ebd20a0c (diff)
downloadopenvswitch-b1e04512f7150aa9d98a121b32f820c316522372.tar.gz
ovn-controller: Only process lflows for local datapaths.
Previously, ovn-controller translated logical flows into OpenFlow flows for *every* logical datapath. This patch makes it so we skip doing so for the egress pipeline if the datapath is a logical switch with no logical ports bound locally. In that case, the flows have no effect. This was the code path taking the most time in a large scale OVN environment and was an easy optimization to make based on the existing local_datapaths info. In this environment, while idling, ovn-controller was taking up about 20% CPU with this patch, while other nodes were in the 40-70% range. Reported-at: https://bugs.launchpad.net/networking-ovn/+bug/1536003 Signed-off-by: Russell Bryant <russell@ovn.org> Tested-by: Matt Mulsow <mamulsow@us.ibm.com> Acked-by: Ben Pfaff <blp@ovn.org> Acked-By: Kyle Mestery <mestery@mestery.com>
Diffstat (limited to 'ovn/controller/ovn-controller.c')
-rw-r--r--ovn/controller/ovn-controller.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
index 98c6dbac9..3638342ec 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -300,7 +300,7 @@ main(int argc, char *argv[])
pinctrl_run(&ctx, br_int);
struct hmap flow_table = HMAP_INITIALIZER(&flow_table);
- lflow_run(&ctx, &flow_table, &ct_zones);
+ lflow_run(&ctx, &flow_table, &ct_zones, &local_datapaths);
if (chassis_id) {
physical_run(&ctx, mff_ovn_geneve,
br_int, chassis_id, &ct_zones, &flow_table);