Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
The FDP team is no longer accepting new bugs in Bugzilla. Please report your issues under FDP project in Jira. Thanks.

Bug 1970122

Summary: Small optimization suggestions for ovn-controller
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Mark Michelson <mmichels>
Component: OVNAssignee: OVN Team <ovnteam>
Status: CLOSED NOTABUG QA Contact: Jianlin Shi <jishi>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: FDP 21.ECC: ctrautma, jiji
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-07-02 14:43:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
500 node ovn-controller perf data none

Description Mark Michelson 2021-06-09 20:30:59 UTC
Created attachment 1789664 [details]
500 node ovn-controller perf data

Based on attached perf results, there are some small optimizations that can be made in ovn-controller:

* Remove smap_get() call from datapath_is_switch() in ovn-util.c in favor of caching the result in the local_datapath struct.

* Optimize prepare_ipv6_ras() in pinctrl.c to not call smap_get() as often:
  * On the local_datapath, set a bool indicating if any of its ports is configured to use periodic RAs.
  * Call datapath_is_switch() to short-circuit if we are examining a switch instead of a router.
  * If possible, change the local_datapath peers members to use a wrapper struct instead of sbrec_port_binding, and save the periodic RA setting on it to avoid smap_get().

Aside from those, the following are ideas for performance improvement, but it is worth testing to see if it's actually helpful before actually merging:

* parse_action() in actions.c can have its if-else ladder changed into an shash lookup.

* The existing stopwatch() in ovn-controller.c could be made opt-in, potentially using an ovn-appctl command.

Comment 1 Mark Michelson 2021-07-02 14:43:15 UTC
Closing as NOTABUG. I attempted the top two optimizations, and it had no noticeable positive effect in a simple load test.