Use the logical switch/router UUID as hash input, instead of the UUID of
the Datapath_Binding row, when calculating the hash value for lflows in
the SBDB.
Otherwise the hash value will never match the one computed from NBDB
contents, which will force ovn-northd to constantly drop and attempt to
re-insert all the lflows.
This brings down the performance boost from caching the hash values
computed for logical flows in SBDB down to the expected level:
Children Self Command Shared Object Symbol
before:
76.19% 0.01% ovn-northd ovn-northd [.] ovnnb_db_run
11.04% 0.43% ovn-northd ovn-northd [.] ovn_lflow_find
after:
75.16% 0.05% ovn-northd ovn-northd [.] ovnnb_db_run
2.49% 0.17% ovn-northd ovn-northd [.] ovn_lflow_find
Fixes: 8bf332225d4a ("ovn-northd: Reduce amount of flow hashing.")
Signed-off-by: Jakub Sitnicki <[email protected]>
---
ovn/lib/ovn-util.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/ovn/lib/ovn-util.c b/ovn/lib/ovn-util.c
index e9464e926..1761defd9 100644
--- a/ovn/lib/ovn-util.c
+++ b/ovn/lib/ovn-util.c
@@ -339,7 +339,13 @@ sbrec_logical_flow_hash(const struct sbrec_logical_flow
*lf)
return 0;
}
- return ovn_logical_flow_hash(&ld->header_.uuid,
+ struct uuid ld_uuid;
+ if (!smap_get_uuid(&ld->external_ids, "logical-switch", &ld_uuid) &&
+ !smap_get_uuid(&ld->external_ids, "logical-router", &ld_uuid)) {
+ return 0;
+ }
+
+ return ovn_logical_flow_hash(&ld_uuid,
lf->table_id, lf->pipeline,
lf->priority, lf->match, lf->actions);
}
--
2.14.3
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev