> This patch-set inspired by [1] from Bhanuprakash Bodireddy. > Implementation of [1] looks very complex and introduces many pitfalls [2] > for later code modifications like possible packet stucks. > > This version targeted to make simple and flexible output packet batching > on higher level without introducing and even simplifying netdev layer. > > Basic testing of 'PVP with OVS bonding on phy ports' scenario shows > significant performance improvement. >
Thanks for the rebase of this series Ilya, we identified this feature as a priority for the 2.9 release so I'll begin review/validation of this next week. Thanks Ian > Test results for time-based batching for v3: > https://mail.openvswitch.org/pipermail/ovs-dev/2017-September/338247.html > > Test results for v4: > https://mail.openvswitch.org/pipermail/ovs-dev/2017-October/339624.html > > [1] [PATCH v4 0/5] netdev-dpdk: Use intermediate queue during packet > transmission. > https://mail.openvswitch.org/pipermail/ovs-dev/2017-August/337019.html > > [2] For example: > https://mail.openvswitch.org/pipermail/ovs-dev/2017-August/337133.html > > Version 6: > * Rebased on current master: > - Added new patch to refactor dp_netdev_pmd_thread structure > according to following suggestion: > https://mail.openvswitch.org/pipermail/ovs-dev/2017- > November/341230.html > > NOTE: I still prefer reverting of the padding related patch. > Rebase done to not block acepting of this series. > Revert patch and discussion here: > https://mail.openvswitch.org/pipermail/ovs-dev/2017- > November/341153.html > > * Added comment about pmd_thread_ctx_time_update() usage. > > Version 5: > * pmd_thread_ctx_time_update() calls moved to different places to > call them only from dp_netdev_process_rxq_port() and main > polling functions: > pmd_thread_main, dpif_netdev_run and dpif_netdev_execute. > All other functions should use cached time from pmd->ctx.now. > It's guaranteed to be updated at least once per polling cycle. > * 'may_steal' patch returned to version from v3 because > 'may_steal' in qos is a completely different variable. This > patch only removes 'may_steal' from netdev API. > * 2 more usec functions added to timeval to have complete public API. > * Checking of 'output_cnt' turned to assertion. > > Version 4: > * Rebased on current master. > * Rebased on top of "Keep latest measured time for PMD thread." > (Jan Scheurich) > * Microsecond resolution related patches integrated. > * Time-based batching without RFC tag. > * 'output_time' renamed to 'flush_time'. (Jan Scheurich) > * 'flush_time' update moved to 'dp_netdev_pmd_flush_output_on_port'. > (Jan Scheurich) > * 'output-max-latency' renamed to 'tx-flush-interval'. > * Added patch for output batching statistics. > > Version 3: > > * Rebased on current master. > * Time based RFC: fixed assert on n_output_batches <= 0. > > Version 2: > > * Rebased on current master. > * Added time based batching RFC patch. > * Fixed mixing packets with different sources in same batch. > > > Ilya Maximets (7): > dpif-netdev: Refactor PMD thread structure for further extension. > dpif-netdev: Keep latest measured time for PMD thread. > dpif-netdev: Output packet batching. > netdev: Remove unused may_steal. > netdev: Remove useless cutlen. > dpif-netdev: Time based output batching. > dpif-netdev: Count sent packets and batches. > > lib/dpif-netdev.c | 412 +++++++++++++++++++++++++++++++++++++-------- > ----- > lib/netdev-bsd.c | 6 +- > lib/netdev-dpdk.c | 30 ++-- > lib/netdev-dummy.c | 6 +- > lib/netdev-linux.c | 8 +- > lib/netdev-provider.h | 7 +- > lib/netdev.c | 12 +- > lib/netdev.h | 2 +- > vswitchd/vswitch.xml | 16 ++ > 9 files changed, 349 insertions(+), 150 deletions(-) > > -- > 2.7.4 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
