diff options
author | Russell Bryant <russell@ovn.org> | 2016-01-20 13:29:25 -0500 |
---|---|---|
committer | Russell Bryant <russell@ovn.org> | 2016-02-03 10:26:46 -0500 |
commit | b1e04512f7150aa9d98a121b32f820c316522372 (patch) | |
tree | ff66a9a3f8c52f1b786e13a8c7c8789e03de895e /ovn/controller/ovn-controller.c | |
parent | 993225bd48296e79b95c5ea0237ee307ebd20a0c (diff) | |
download | openvswitch-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.c | 2 |
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); |