[ovs-dev] [PATCH v7 0/7] Rxq scheduling updates.

Kevin Traynor ktraynor at redhat.com
Fri Jul 16 16:02:04 UTC 2021


The first two patches do not provide new functionality for the user
(except the logs are reworked). They are reworking to make the
rxq scheduling and PMD auto load balance code more modular for cleanup
and to be used by subsequent patches. They are also removing the code
duplication between them by having some common functions they can both use.

The other patches are new functionality and unit tests.

github actions:
https://github.com/kevintraynor/ovs/actions/runs/1038045758

v7:
- Removed SCHED_MAX as conflicting on Windows

v5/6:
- Rebased NEWS file update and added Acks. No code changes.

v4:
- Fixed NEWS file conflict from (almost) mid-air collision of other patch merging

v3:
-  fixed asan enabled unit tests

v2:
- added unit tests
- rework from comments
- much renaming and minor fixes
- reordered the patches and added 2 more

---

1/7 reworks the current rxq scheduling code to make it more modular
and reusable. No functional change.
v7:
- Removed SCHED_MAX as conflicting on Windows
v3:
- fixed asan enabled unit tests
- minor comment syntax
v2:
- renamed functions on David's suggestions
- used enum instead of bool for assignment type from the start
- fixed mem leak
- removed/simplified some redundant code

2/7 makes PMD auto load balance reuse the common rxq scheduling code
and removes the duplication of the rxq scheduling code in PMD auto load
balance for making a dry run. No functional change.
v3:
- added missing clang annotation
v2: minor changes

3/7 new in v2. This is a small patch to make the pmd list used
for rxq scheduling ordered by core id. This is just to add some consistency
between schedules/test runs/pmd-cpu-mask changes.

4/7 provides a fallback for if the user tries to pin an rxq to a PMD with
pmd-rxq-affinity but the PMD is not in the pmd-cpu-mask. Previously it was
not polled. Now it will be polled by an available core.
v3:
- minor comment syntax
v2:
- removed some unneeded code by David's suggestion here and in 1/7 of not
  post-processing rxqs that have been already pinned

5/7 adds a new option to assign rxqs to pmds that incorporates the
estimated load of the PMD and removes the restriction for trying to
equally distribute the number of rxqs across the PMDs. This means it
is solely load based so will help optimize balancing the processing
load across the PMDs. With this method, a group of low loaded rxqs
may be on one PMD, while another PMD could have just one highly loaded
rxq.
v4/5:
- fixed NEWS conflict
v2:
- combined the lowest_* functions on Sunil's suggestion
- simplified some code
- added unit tests

6/7 adds an option to non-isolate the PMD when it is pinned with an rxq
using pmd-rxq-affinity.
v2:
- added unit tests

7/7 new in v2. There was no unit tests testing cross-numa assignments.
i.e. what happens when there is no numa local pmds for an rxq. Aside
from using the new logs, these tests are relevant regardless of this patchset.

Kevin Traynor (7):
  dpif-netdev: Rework rxq scheduling code.
  dpif-netdev: Make PMD auto load balance use common rxq scheduling.
  dpif-netdev: Sort PMD list by core id for rxq scheduling.
  dpif-netdev: Assign PMD for failed pinned rxqs.
  dpif-netdev: Add group rxq scheduling assignment type.
  dpif-netdev: Allow pin rxq and non-isolate PMD.
  tests: Add new test for cross-numa pmd rxq assignments.

 Documentation/topics/dpdk/pmd.rst |   41 +-
 NEWS                              |    5 +
 lib/dpif-netdev.c                 | 1055 ++++++++++++++++++-----------
 tests/pmd.at                      |  285 +++++++-
 vswitchd/vswitch.xml              |   24 +-
 5 files changed, 993 insertions(+), 417 deletions(-)

-- 
2.31.1



More information about the dev mailing list