[ovs-dev] [PATCH 0/4] dpif-netdev: rxq auto-lb improvements

anurag2k at gmail.com anurag2k at gmail.com
Tue Jun 29 11:27:52 UTC 2021


From: Anurag Agarwal <anurag.agarwal at ericsson.com>

=========   Disclaimer  ==============
This patch set was prepared and verified downstream in early 2021. A very 
similar set of patches with auto load balance enhancements has recently been
submitted by Red Hat:
https://mail.openvswitch.org/pipermail/ovs-dev/2021-June/383618.html. 

We acknowledge the large overlap between both patch sets and submit our set
of patches to underline the importance of these improvements and offer our own
implementation as an alternative proposal. We are very much open to discussing
the best way forward in the OVS-DPDK community to merge all improvements
together in one patch set.
=======================================

The rxq auto-load balancing in dpif-netdev is an important function
for maximizing the total throughput of the OVS-DPDK datapath in cloud
deployments with unknown and highly variable load on a dynamically
changing set of vhostuser ports on top of a static configuration of
physical ports and PMD threads.

We have found in live tests that the efficacy of auto-lb can be
further improved by giving OVS more freedom in distributing rxqs,
e.g. to assign phy rxqs to NUMA-remote PMDs(cross-NUMA polling)  or
vhostuser rxqs to PMDs with pinned phy rxqs.

The following two interface configuration knobs have been introduced
to relax the constraints on rxq_scheduling() function.

ovs-vsctl set interface <Name>  \
    other_config : pmd-rxq-affinity = rxq1:cpu1,rxq2:cpu2,...[,no-isol]

ovs-vsctl set interface <Name> other_config:cross-numa-polling=true

The auto-lb dry-run code is refactored to rely on rxq_scheduling() function
in order to get rid of duplicated code and inconsistencies.

Finally a new least-loaded scheduling algorithm is implemented to assign
RxQs to PMDs based on the PMD load to achieve equally balanced traffic
load to PMDs.

Anurag Agarwal (4):
  dpif-netdev: Refactor rxq auto-lb dry-run code.
  dpif-netdev: Least-loaded scheduling algorithm for rxqs
  dpif-netdev: pmd-rxq-affinity with optional PMD isolation
  dpif-netdev: Allow cross-NUMA polling on selected ports

 Documentation/topics/dpdk/pmd.rst |  46 ++-
 lib/dpif-netdev.c                 | 612 ++++++++++++++++++++------------------
 tests/pmd.at                      |  59 +++-
 vswitchd/vswitch.xml              |  31 +-
 4 files changed, 442 insertions(+), 306 deletions(-)

-- 
2.7.4



More information about the dev mailing list