> 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