On 1/13/23 13:20, Dheeraj Kumar 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 for a single output port. In systems with hundreds of ports
> this can take a long time and degrades OVS-DPDK performance significantly.
> 
> Solution:
> Maintain a list of output ports with buffered packets for each PMD thread and
> only iterate over that list when flushing output buffers.
> 
> Signed-off-by: Dheeraj Kumar <dheera...@acldigital.com>
> ---
>  lib/dpif-netdev-private-thread.h |  7 ++++---
>  lib/dpif-netdev.c                | 24 ++++++++++++------------
>  2 files changed, 16 insertions(+), 15 deletions(-)

Hi, Dheeraj.  Thanks for the updated version.
Unfortunately, on a quick test with bidirectional traffic between
2 vhost-user ports I see a noticeable 4% performance degradation
with this change applied.  Could you, please, check why is that
happening or if we can avoid this?

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to