On 9/22/22 14:52, Dheeraj Kumar via dev wrote:
> Problem Statement:
> Before OVS 2.12 the OVS-DPDK datapath transmitted processed rx packet batches
> directly to the wanted tx queues. In OVS 2.12 each PMD stores the processed
> packets in an intermediate buffer per output port and flushes these output
> buffers in a separate step. This buffering was introduced to allow better
> batching of packets for transmit.
> 
> The current implementation of the function that flushes the output buffers
> performs a full scan overall output ports, even if only one single packet
> was buffered. In systems with hundreds of ports this can take a long time and
> degrades OVS-DPDK performance significantly.

Hi.  Thanks for the patch!

Do you have some more detailed performance data for this change?

Also, IIUC, you're trying to optimize a use-case with a few
high-traffic ports and many low-traffic ports on the same thread.
If so, maybe auto load-balancing may also help in this case
by moving away low-traffic ports to other threads?  Did you try
somethign like that?


> 
> Solution:
> Maintain a list of output ports with buffered packets for each PMD thread and
> only iterate over that list when flushing output buffers. Furthermore, defer
> the flushing of packet buffers to a single invocation at the end of each PMD
> loop when output packet batching with a tx-flush-interval has been enabled
> and increased jitter (in microsecond range is not of concern).

I'm not sure about the last part.  The tx-flush-interval is enabled
by default and users should not generally touch it unless they really
know what they are doing.  Som that change will affect the majority
of OVS users.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to