On Fri, Aug 25, 2017 at 10:36 AM, Darrell Ball <db...@vmware.com> wrote: > I applied the series to https://github.com/darball/ovs/commits/dpdk_merge
I believe this series is worth a mention in the NEWS, reengineering an important OVS-DPDK limitation. > > > > On 8/24/17, 4:37 PM, "Kevin Traynor" <ktray...@redhat.com> wrote: > > 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. > > V5 -> V6 > ======== > Minor changes to 2/6, 3/6, 4/6, 5/6 from Darrell's review comments. > > V4 -> V5 > ======== > Changed history of rxq considered during assignment to 1 min. In order > to have data available quicker than 1 min and not to be using up to > 1 min old data, introduced storing of data in multiple intervals > similar to suggestion by Darrell. Some minor name changes to reflect > this. > > 2/6 Added storage for multiple intervals > 3/6 Store cycles into interval > 4/6 Sum cycles from intervals and use total for assignment > > V3 -> V4 > ======== > 4/6 > Rebased to accomodate new cross numa assigment. > > V2 -> V3 > ======== > Dropped v2 1/7 as not reusing dpcls optimisation interval anymore > > 2/6 > Moved unused functions to 3/6 to avoid compiler warning > > 3/6 > Made pmd rxq interval independent from dpcls opt interval > > 4/6 > Moved docs about rebalance command to when it is available in 6/6 > Added logging info for pmd to rxq assignment > > 5/6 > Added an example to docs > > 6/6 > Noted in commit msg that Jan requested this for testing purposes > > V1 -> V2 > ======== > Dropped Ciara's patch to change how pmd cycles are counted as it merged. > > 6/7: Rebased unit tests. > > > Kevin Traynor (6): > 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 | 26 ++++ > lib/dpif-netdev.c | 298 > ++++++++++++++++++++++++++++++++++++------- > tests/pmd.at | 2 +- > vswitchd/ovs-vswitchd.8.in | 2 + > 4 files changed, 284 insertions(+), 44 deletions(-) > > -- > 1.8.3.1 > > > > > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev