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