> 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.

Thanks for working on this Kevin, I've provided some more comments on a few 
patches in this series.

Thanks
Ian
> 
> V1 -> V2
> ========
> Dropped Ciara's patch to change how pmd cycles are counted as it merged.
> 
> 6/7: Rebased unit tests.
> 
> 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.
> 
> 
> 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            | 213 ++++++++++++++++++++++++++++++++++++--
> -----
>  tests/pmd.at                 |   2 +-
>  vswitchd/ovs-vswitchd.8.in   |   2 +
>  4 files changed, 194 insertions(+), 33 deletions(-)
> 
> --
> 1.8.3.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to