Bug 1825766 - [RFE] [OVN SCALE] ovn-controller : Have a separate thread to program flows
Summary: [RFE] [OVN SCALE] ovn-controller : Have a separate thread to program flows
Keywords:
Status: ASSIGNED
Alias: None
Product: Red Hat Enterprise Linux Fast Datapath
Classification: Red Hat
Component: OVN
Version: FDP 20.A
Hardware: Unspecified
OS: Unspecified
medium
unspecified
Target Milestone: ---
: ---
Assignee: anil venkata
QA Contact: Jianlin Shi
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-04-20 08:05 UTC by Numan Siddique
Modified: 2023-07-13 07:25 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FD-591 0 None None None 2021-11-12 14:39:01 UTC

Description Numan Siddique 2020-04-20 08:05:00 UTC
Explore ovn-controller having the separate thread for pushing the flows to the switch.

When the switch has pending packets for processing, ovn-controller will skip the engine to avoid generating the flows
and instead retriggers forced computes for the next engine runs, which will regenerate all logical and physical flows.
Explore if we can avoid this i.e let engine not consider pending packets in the switch and continue with the flow
generation and ofctrl then should take care of pushing those flows when the switch is not processing packets.

Comment 1 anil venkata 2020-05-06 06:15:58 UTC
I tried this approach https://github.com/venkataanil/ovn/tree/thread i.e
splitting ovn-controller into two threads (similar to produce consumer approach)
1) main thread will continue with generating flows
2) new thread will push these flows to the switch when there are no pending packets
but I don't see much performance improvement as scheduling this new thread by kernel
when it gets new flows also consumes some time.

Comment 2 anil venkata 2020-05-06 06:34:26 UTC
Enhanced the thread approach here https://github.com/venkataanil/ovn/tree/p10_thread

Now trying the below approach
Want to avoid thread and instead define the msgs as static so that they will be
avialable across engine runs. engine will keep on generating messages according to
flow changes without checking if the switch has pending packets. ofctrl put will
avoid pushing the packets to switch when it has pending packets and will send them
during next engine run. 
https://github.com/venkataanil/ovn/tree/ofctrl_put_delay


Note You need to log in before you can comment on or make changes to this bug.