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.
[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
Testing of 'PVP with OVS bonding on phy ports' scenario shows significant
performance
improvement up to +25%:
https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341700.html
Other testing results for v6:
https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341605.html
https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341628.html
Version 7:
* Rebased on current istokes/dpdk_merge (3eb8d4f)
* Dropped dp_netdev_pmd_thread structure refactoring patch.
Not needed since revert applied.
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 (6):
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 | 349 ++++++++++++++++++++++++++++++++++++++------------
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, 311 insertions(+), 125 deletions(-)
--
2.7.4
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev