[ovs-dev] [PATCH 0/8] OVS-DPDK rxq to pmd assignment improvements.

Kevin Traynor ktraynor at redhat.com
Wed Jun 28 12:42:45 UTC 2017


For the DPDK datapath, by default rxqs are assigned to available pmds
in round robin order with no weight or priority.

It can happen that some very busy queues are handled by one pmd which
does not have enough cycles to prevent packets being dropped on them.
While at the same time another pmd which handles queues with no traffic
on them is essentially idle.

Rxq to pmd assignment happens as a result of a number of events and
when it does, the same unweighted round robin approach is applied
each time.

This patchset proposes to improve the round robin nature of rxq to pmd
assignment by counting the processing cycles used by the rxqs during
their operation and incorporating that data into assignment.

Before assigning in a round robin manner, the rxqs will be sorted in
order of the processing cycles they have been consuming. Assuming
multiple pmds, this ensures that the rxqs measured to be using the
most processing cycles will be assigned to different cores.

In some cases the measured cycles for an rxq may be not available as
the rxq is new or may not be useful for assignment as traffic patterns
may change.  In those cases the code will essentially fallback to being
round round similar to what currently exists. However, in the case
where data is available and a reliable indication of future rxq cycles
consumption, rxq to pmd distribution will be much improved.

I'll be on vacation soon, so replies may be delayed.

RFC -> PATCH
============
Changed order of patches, squashed two and added some new patches.

1/8
Added Ciara's patch into this series so it can be applied in one go.
It's a standalone patch but has not merged yet.

2/8
No change.

3/8
No change.

4/8
Merged patch that adds counters with patch that updates them
through cycle_count_intermediate to remove unsed function warnings.
Consolidated counter functions by using enum as suggested by Ian Stokes.
Small changes to use new counter functions.

5/8
Minor changes to use new counter functions.

6/8
Minor changes to use new counter functions.
Added docs.

7/8
Newly added as suggested by Ian Stokes.

8/8
Newly added as suggested by Jan Scheurich.


Ciara Loftus (1):
  dpif-netdev: Change definitions of 'idle' & 'processing' cycles

Kevin Traynor (7):
  dpif-netdev: Make dpcls optimization interval more generic.
  dpif-netdev: Change polled_queue to use dp_netdev_rxq.
  dpif-netdev: Add rxq processing cycle counters.
  dpif-netdev: Count the rxq processing cycles for an rxq.
  dpif-netdev: Change rxq_scheduling to use rxq processing cycles.
  dpif-netdev: Change pmd selection order.
  dpif-netdev: Add ovs-appctl dpif-netdev/pmd-rxq-rebalance.

 Documentation/howto/dpdk.rst |  10 ++
 lib/dpif-netdev.c            | 263 ++++++++++++++++++++++++++++++++++++-------
 tests/pmd.at                 |   2 +-
 vswitchd/ovs-vswitchd.8.in   |   7 +-
 4 files changed, 238 insertions(+), 44 deletions(-)

-- 
1.8.3.1



More information about the dev mailing list